ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/pystatgrab/_statgrab.pyx
(Generate patch)

Comparing projects/pystatgrab/_statgrab.pyx (file contents):
Revision 1.13 by tdb, Sun May 30 15:32:28 2004 UTC vs.
Revision 1.18 by ats, Wed Sep 14 18:15:44 2005 UTC

# Line 1 | Line 1
1   #
2   # i-scream pystatgrab
3 < # http://www.i-scream.org
3 > # http://www.i-scream.org/pystatgrab/
4   # Copyright (C) 2000-2004 i-scream
5   #
6   # This program is free software; you can redistribute it and/or
# Line 21 | Line 21
21   #
22  
23   ctypedef long time_t
24 + ctypedef int pid_t
25 + ctypedef int uid_t
26 + ctypedef int gid_t
27  
28   cdef extern from "statgrab.h":
29      cdef extern int sg_init()
30      cdef extern int sg_drop_privileges()
31  
32 +    ctypedef enum sg_error:
33 +        SG_ERROR_NONE = 0
34 +        SG_ERROR_ASPRINTF
35 +        SG_ERROR_DEVSTAT_GETDEVS
36 +        SG_ERROR_DEVSTAT_SELECTDEVS
37 +        SG_ERROR_ENOENT
38 +        SG_ERROR_GETIFADDRS
39 +        SG_ERROR_GETMNTINFO
40 +        SG_ERROR_GETPAGESIZE
41 +        SG_ERROR_KSTAT_DATA_LOOKUP
42 +        SG_ERROR_KSTAT_LOOKUP
43 +        SG_ERROR_KSTAT_OPEN
44 +        SG_ERROR_KSTAT_READ
45 +        SG_ERROR_KVM_GETSWAPINFO
46 +        SG_ERROR_KVM_OPENFILES
47 +        SG_ERROR_MALLOC
48 +        SG_ERROR_OPEN
49 +        SG_ERROR_OPENDIR
50 +        SG_ERROR_PARSE
51 +        SG_ERROR_SETEGID
52 +        SG_ERROR_SETEUID
53 +        SG_ERROR_SETMNTENT
54 +        SG_ERROR_SOCKET
55 +        SG_ERROR_SWAPCTL
56 +        SG_ERROR_SYSCONF
57 +        SG_ERROR_SYSCTL
58 +        SG_ERROR_SYSCTLBYNAME
59 +        SG_ERROR_SYSCTLNAMETOMIB
60 +        SG_ERROR_UNAME
61 +        SG_ERROR_UNSUPPORTED
62 +        SG_ERROR_XSW_VER_MISMATCH
63 +
64 +    cdef extern void sg_set_error(sg_error code, char *arg)
65 +    cdef extern void sg_set_error_with_errno(sg_error code, char *arg)
66 +    cdef extern sg_error sg_get_error()
67 +    cdef extern char *sg_get_error_arg()
68 +    cdef extern int sg_get_error_errno()
69 +    cdef extern char *sg_str_error(sg_error code)
70 +
71      ctypedef struct sg_host_info:
72          char *os_name
73          char *os_release
# Line 98 | Line 140 | cdef extern from "statgrab.h":
140          long long total_inodes
141          long long used_inodes
142          long long free_inodes
143 +        long long avail_inodes
144 +        long long io_size
145 +        long long block_size
146 +        long long total_blocks
147 +        long long free_blocks
148 +        long long used_blocks
149 +        long long avail_blocks
150  
151      cdef extern sg_fs_stats *sg_get_fs_stats(int *entries)
152  
# Line 132 | Line 181 | cdef extern from "statgrab.h":
181      ctypedef struct sg_network_iface_stats:
182          char *interface_name
183          int speed
184 <        sg_iface_duplex dup
184 >        sg_iface_duplex duplex
185          int up
186  
187      cdef extern sg_network_iface_stats *sg_get_network_iface_stats(int *entries)
# Line 145 | Line 194 | cdef extern from "statgrab.h":
194      cdef extern sg_page_stats *sg_get_page_stats()
195      cdef extern sg_page_stats *sg_get_page_stats_diff()
196  
197 +    ctypedef enum sg_process_state:
198 +        SG_PROCESS_STATE_RUNNING
199 +        SG_PROCESS_STATE_SLEEPING
200 +        SG_PROCESS_STATE_STOPPED
201 +        SG_PROCESS_STATE_ZOMBIE
202 +        SG_PROCESS_STATE_UNKNOWN
203 +
204 +    ctypedef struct sg_process_stats:
205 +        char *process_name
206 +        char *proctitle
207 +        pid_t pid
208 +        pid_t parent
209 +        pid_t pgid
210 +        uid_t uid
211 +        uid_t euid
212 +        gid_t gid
213 +        gid_t egid
214 +        unsigned long long proc_size
215 +        unsigned long long proc_resident
216 +        time_t time_spent
217 +        double cpu_percent
218 +        int nice
219 +        sg_process_state state
220 +
221 +    cdef extern sg_process_stats *sg_get_process_stats(int *entries)
222 +
223      ctypedef struct sg_process_count:
224          int total
225          int running
# Line 155 | Line 230 | cdef extern from "statgrab.h":
230      cdef extern sg_process_count *sg_get_process_count()
231  
232  
233 + py_SG_ERROR_NONE = SG_ERROR_NONE
234 + py_SG_ERROR_ASPRINTF = SG_ERROR_ASPRINTF
235 + py_SG_ERROR_DEVSTAT_GETDEVS = SG_ERROR_DEVSTAT_GETDEVS
236 + py_SG_ERROR_DEVSTAT_SELECTDEVS = SG_ERROR_DEVSTAT_SELECTDEVS
237 + py_SG_ERROR_ENOENT = SG_ERROR_ENOENT
238 + py_SG_ERROR_GETIFADDRS = SG_ERROR_GETIFADDRS
239 + py_SG_ERROR_GETMNTINFO = SG_ERROR_GETMNTINFO
240 + py_SG_ERROR_GETPAGESIZE = SG_ERROR_GETPAGESIZE
241 + py_SG_ERROR_KSTAT_DATA_LOOKUP = SG_ERROR_KSTAT_DATA_LOOKUP
242 + py_SG_ERROR_KSTAT_LOOKUP = SG_ERROR_KSTAT_LOOKUP
243 + py_SG_ERROR_KSTAT_OPEN = SG_ERROR_KSTAT_OPEN
244 + py_SG_ERROR_KSTAT_READ = SG_ERROR_KSTAT_READ
245 + py_SG_ERROR_KVM_GETSWAPINFO = SG_ERROR_KVM_GETSWAPINFO
246 + py_SG_ERROR_KVM_OPENFILES = SG_ERROR_KVM_OPENFILES
247 + py_SG_ERROR_MALLOC = SG_ERROR_MALLOC
248 + py_SG_ERROR_OPEN = SG_ERROR_OPEN
249 + py_SG_ERROR_OPENDIR = SG_ERROR_OPENDIR
250 + py_SG_ERROR_PARSE = SG_ERROR_PARSE
251 + py_SG_ERROR_SETEGID = SG_ERROR_SETEGID
252 + py_SG_ERROR_SETEUID = SG_ERROR_SETEUID
253 + py_SG_ERROR_SETMNTENT = SG_ERROR_SETMNTENT
254 + py_SG_ERROR_SOCKET = SG_ERROR_SOCKET
255 + py_SG_ERROR_SWAPCTL = SG_ERROR_SWAPCTL
256 + py_SG_ERROR_SYSCONF = SG_ERROR_SYSCONF
257 + py_SG_ERROR_SYSCTL = SG_ERROR_SYSCTL
258 + py_SG_ERROR_SYSCTLBYNAME = SG_ERROR_SYSCTLBYNAME
259 + py_SG_ERROR_SYSCTLNAMETOMIB = SG_ERROR_SYSCTLNAMETOMIB
260 + py_SG_ERROR_UNAME = SG_ERROR_UNAME
261 + py_SG_ERROR_UNSUPPORTED = SG_ERROR_UNSUPPORTED
262 + py_SG_ERROR_XSW_VER_MISMATCH = SG_ERROR_XSW_VER_MISMATCH
263 +
264   py_SG_IFACE_DUPLEX_FULL = SG_IFACE_DUPLEX_FULL
265   py_SG_IFACE_DUPLEX_HALF = SG_IFACE_DUPLEX_HALF
266   py_SG_IFACE_DUPLEX_UNKNOWN = SG_IFACE_DUPLEX_UNKNOWN
267  
268 + py_SG_PROCESS_STATE_RUNNING = SG_PROCESS_STATE_RUNNING
269 + py_SG_PROCESS_STATE_SLEEPING = SG_PROCESS_STATE_SLEEPING
270 + py_SG_PROCESS_STATE_STOPPED = SG_PROCESS_STATE_STOPPED
271 + py_SG_PROCESS_STATE_ZOMBIE = SG_PROCESS_STATE_ZOMBIE
272 + py_SG_PROCESS_STATE_UNKNOWN = SG_PROCESS_STATE_UNKNOWN
273  
274 +
275   class Result:
276      def __init__(self, attrs):
277          self.attrs = attrs
# Line 189 | Line 301 | def py_sg_drop_privileges():
301      else:
302          return False
303  
304 + def py_sg_set_error(code, arg):
305 +    sg_set_error(code, arg)
306 +
307 + def py_sg_set_error_with_errno(code, arg):
308 +    sg_set_error_with_errno(code, arg)
309 +
310 + def py_sg_get_error():
311 +    cdef sg_error s
312 +    s = sg_get_error()
313 +    return s
314 +
315 + def py_sg_get_error_arg():
316 +    s = sg_get_error_arg()
317 +    return s
318 +
319 + def py_sg_get_error_errno():
320 +    s = sg_get_error_errno()
321 +    return s
322 +
323 + def py_sg_str_error(code):
324 +    s = sg_str_error(code)
325 +    return s
326 +
327   def py_sg_get_host_info():
328      cdef sg_host_info *s
329      s = sg_get_host_info()
# Line 320 | Line 455 | def py_sg_get_fs_stats():
455               'total_inodes': s.total_inodes,
456               'used_inodes': s.used_inodes,
457               'free_inodes': s.free_inodes,
458 +             'avail_inodes': s.avail_inodes,
459 +             'io_size': s.io_size,
460 +             'block_size': s.block_size,
461 +             'total_blocks': s.total_blocks,
462 +             'free_blocks': s.free_blocks,
463 +             'used_blocks': s.used_blocks,
464 +             'avail_blocks': s.avail_blocks,
465              }
466          ))
467          s = s + 1
# Line 418 | Line 560 | def py_sg_get_network_iface_stats():
560          list.append(Result(
561              {'interface_name': s.interface_name,
562               'speed': s.speed,
563 <             'dup': s.dup,
563 >             'duplex': s.duplex,
564               'up' : s.up,
565              }
566          ))
# Line 446 | Line 588 | def py_sg_get_page_stats_diff():
588           'pages_pageout': s.pages_pageout,
589          }
590      )
591 +
592 + def py_sg_get_process_stats():
593 +    cdef sg_process_stats *s
594 +    cdef int entries
595 +    s = sg_get_process_stats(&entries)
596 +    if s == NULL:
597 +        raise StatgrabException, 'sg_get_process_stats() returned NULL'
598 +    list = []
599 +    for i from 0 <= i < entries:
600 +        if s.process_name is NULL:
601 +            process_name = ''
602 +        else:
603 +            process_name = s.process_name
604 +        if s.proctitle is NULL:
605 +            proctitle = ''
606 +        else:
607 +            proctitle = s.proctitle
608 +        list.append(Result(
609 +            {'process_name': process_name,
610 +             'proctitle' : proctitle,
611 +             'pid' : s.pid,
612 +             'parent' : s.parent,
613 +             'pgid' : s.pgid,
614 +             'uid' : s.uid,
615 +             'euid' : s.euid,
616 +             'gid' : s.gid,
617 +             'egid' : s.egid,
618 +             'proc_size' : s.proc_size,
619 +             'proc_resident' : s.proc_resident,
620 +             'time_spent' : s.time_spent,
621 +             'cpu_percent' : s.cpu_percent,
622 +             'nice' : s.nice,
623 +             'state' : s.state,
624 +            }
625 +        ))
626 +        s = s + 1
627 +    return list
628  
629   def py_sg_get_process_count():
630      cdef sg_process_count *s

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines