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.20 by tdb, Fri Jul 13 22:26:19 2007 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_shutdown()
31 +    cdef extern int sg_snapshot()
32      cdef extern int sg_drop_privileges()
33  
34 +    ctypedef enum sg_error:
35 +        SG_ERROR_NONE = 0
36 +        SG_ERROR_ASPRINTF
37 +        SG_ERROR_DEVSTAT_GETDEVS
38 +        SG_ERROR_DEVSTAT_SELECTDEVS
39 +        SG_ERROR_ENOENT
40 +        SG_ERROR_GETIFADDRS
41 +        SG_ERROR_GETMNTINFO
42 +        SG_ERROR_GETPAGESIZE
43 +        SG_ERROR_KSTAT_DATA_LOOKUP
44 +        SG_ERROR_KSTAT_LOOKUP
45 +        SG_ERROR_KSTAT_OPEN
46 +        SG_ERROR_KSTAT_READ
47 +        SG_ERROR_KVM_GETSWAPINFO
48 +        SG_ERROR_KVM_OPENFILES
49 +        SG_ERROR_MALLOC
50 +        SG_ERROR_OPEN
51 +        SG_ERROR_OPENDIR
52 +        SG_ERROR_PARSE
53 +        SG_ERROR_SETEGID
54 +        SG_ERROR_SETEUID
55 +        SG_ERROR_SETMNTENT
56 +        SG_ERROR_SOCKET
57 +        SG_ERROR_SWAPCTL
58 +        SG_ERROR_SYSCONF
59 +        SG_ERROR_SYSCTL
60 +        SG_ERROR_SYSCTLBYNAME
61 +        SG_ERROR_SYSCTLNAMETOMIB
62 +        SG_ERROR_UNAME
63 +        SG_ERROR_UNSUPPORTED
64 +        SG_ERROR_XSW_VER_MISMATCH
65 +
66 +    cdef extern void sg_set_error(sg_error code, char *arg)
67 +    cdef extern void sg_set_error_with_errno(sg_error code, char *arg)
68 +    cdef extern sg_error sg_get_error()
69 +    cdef extern char *sg_get_error_arg()
70 +    cdef extern int sg_get_error_errno()
71 +    cdef extern char *sg_str_error(sg_error code)
72 +
73      ctypedef struct sg_host_info:
74          char *os_name
75          char *os_release
# Line 98 | Line 142 | cdef extern from "statgrab.h":
142          long long total_inodes
143          long long used_inodes
144          long long free_inodes
145 +        long long avail_inodes
146 +        long long io_size
147 +        long long block_size
148 +        long long total_blocks
149 +        long long free_blocks
150 +        long long used_blocks
151 +        long long avail_blocks
152  
153      cdef extern sg_fs_stats *sg_get_fs_stats(int *entries)
154  
# Line 132 | Line 183 | cdef extern from "statgrab.h":
183      ctypedef struct sg_network_iface_stats:
184          char *interface_name
185          int speed
186 <        sg_iface_duplex dup
186 >        sg_iface_duplex duplex
187          int up
188  
189      cdef extern sg_network_iface_stats *sg_get_network_iface_stats(int *entries)
# Line 145 | Line 196 | cdef extern from "statgrab.h":
196      cdef extern sg_page_stats *sg_get_page_stats()
197      cdef extern sg_page_stats *sg_get_page_stats_diff()
198  
199 +    ctypedef enum sg_process_state:
200 +        SG_PROCESS_STATE_RUNNING
201 +        SG_PROCESS_STATE_SLEEPING
202 +        SG_PROCESS_STATE_STOPPED
203 +        SG_PROCESS_STATE_ZOMBIE
204 +        SG_PROCESS_STATE_UNKNOWN
205 +
206 +    ctypedef struct sg_process_stats:
207 +        char *process_name
208 +        char *proctitle
209 +        pid_t pid
210 +        pid_t parent
211 +        pid_t pgid
212 +        uid_t uid
213 +        uid_t euid
214 +        gid_t gid
215 +        gid_t egid
216 +        unsigned long long proc_size
217 +        unsigned long long proc_resident
218 +        time_t time_spent
219 +        double cpu_percent
220 +        int nice
221 +        sg_process_state state
222 +
223 +    cdef extern sg_process_stats *sg_get_process_stats(int *entries)
224 +
225      ctypedef struct sg_process_count:
226          int total
227          int running
# Line 155 | Line 232 | cdef extern from "statgrab.h":
232      cdef extern sg_process_count *sg_get_process_count()
233  
234  
235 + py_SG_ERROR_NONE = SG_ERROR_NONE
236 + py_SG_ERROR_ASPRINTF = SG_ERROR_ASPRINTF
237 + py_SG_ERROR_DEVSTAT_GETDEVS = SG_ERROR_DEVSTAT_GETDEVS
238 + py_SG_ERROR_DEVSTAT_SELECTDEVS = SG_ERROR_DEVSTAT_SELECTDEVS
239 + py_SG_ERROR_ENOENT = SG_ERROR_ENOENT
240 + py_SG_ERROR_GETIFADDRS = SG_ERROR_GETIFADDRS
241 + py_SG_ERROR_GETMNTINFO = SG_ERROR_GETMNTINFO
242 + py_SG_ERROR_GETPAGESIZE = SG_ERROR_GETPAGESIZE
243 + py_SG_ERROR_KSTAT_DATA_LOOKUP = SG_ERROR_KSTAT_DATA_LOOKUP
244 + py_SG_ERROR_KSTAT_LOOKUP = SG_ERROR_KSTAT_LOOKUP
245 + py_SG_ERROR_KSTAT_OPEN = SG_ERROR_KSTAT_OPEN
246 + py_SG_ERROR_KSTAT_READ = SG_ERROR_KSTAT_READ
247 + py_SG_ERROR_KVM_GETSWAPINFO = SG_ERROR_KVM_GETSWAPINFO
248 + py_SG_ERROR_KVM_OPENFILES = SG_ERROR_KVM_OPENFILES
249 + py_SG_ERROR_MALLOC = SG_ERROR_MALLOC
250 + py_SG_ERROR_OPEN = SG_ERROR_OPEN
251 + py_SG_ERROR_OPENDIR = SG_ERROR_OPENDIR
252 + py_SG_ERROR_PARSE = SG_ERROR_PARSE
253 + py_SG_ERROR_SETEGID = SG_ERROR_SETEGID
254 + py_SG_ERROR_SETEUID = SG_ERROR_SETEUID
255 + py_SG_ERROR_SETMNTENT = SG_ERROR_SETMNTENT
256 + py_SG_ERROR_SOCKET = SG_ERROR_SOCKET
257 + py_SG_ERROR_SWAPCTL = SG_ERROR_SWAPCTL
258 + py_SG_ERROR_SYSCONF = SG_ERROR_SYSCONF
259 + py_SG_ERROR_SYSCTL = SG_ERROR_SYSCTL
260 + py_SG_ERROR_SYSCTLBYNAME = SG_ERROR_SYSCTLBYNAME
261 + py_SG_ERROR_SYSCTLNAMETOMIB = SG_ERROR_SYSCTLNAMETOMIB
262 + py_SG_ERROR_UNAME = SG_ERROR_UNAME
263 + py_SG_ERROR_UNSUPPORTED = SG_ERROR_UNSUPPORTED
264 + py_SG_ERROR_XSW_VER_MISMATCH = SG_ERROR_XSW_VER_MISMATCH
265 +
266   py_SG_IFACE_DUPLEX_FULL = SG_IFACE_DUPLEX_FULL
267   py_SG_IFACE_DUPLEX_HALF = SG_IFACE_DUPLEX_HALF
268   py_SG_IFACE_DUPLEX_UNKNOWN = SG_IFACE_DUPLEX_UNKNOWN
269  
270 + py_SG_PROCESS_STATE_RUNNING = SG_PROCESS_STATE_RUNNING
271 + py_SG_PROCESS_STATE_SLEEPING = SG_PROCESS_STATE_SLEEPING
272 + py_SG_PROCESS_STATE_STOPPED = SG_PROCESS_STATE_STOPPED
273 + py_SG_PROCESS_STATE_ZOMBIE = SG_PROCESS_STATE_ZOMBIE
274 + py_SG_PROCESS_STATE_UNKNOWN = SG_PROCESS_STATE_UNKNOWN
275  
276 +
277   class Result:
278      def __init__(self, attrs):
279          self.attrs = attrs
# Line 183 | Line 297 | def py_sg_init():
297      else:
298          return False
299  
300 + def py_sg_shutdown():
301 +    if sg_shutdown() == 0:
302 +        return True
303 +    else:
304 +        return False
305 +
306 + def py_sg_snapshot():
307 +    if sg_snapshot() == 0:
308 +        return True
309 +    else:
310 +        return False
311 +
312   def py_sg_drop_privileges():
313      if sg_drop_privileges() == 0:
314          return True
315      else:
316          return False
317  
318 + def py_sg_set_error(code, arg):
319 +    sg_set_error(code, arg)
320 +
321 + def py_sg_set_error_with_errno(code, arg):
322 +    sg_set_error_with_errno(code, arg)
323 +
324 + def py_sg_get_error():
325 +    cdef sg_error s
326 +    s = sg_get_error()
327 +    return s
328 +
329 + def py_sg_get_error_arg():
330 +    s = sg_get_error_arg()
331 +    return s
332 +
333 + def py_sg_get_error_errno():
334 +    s = sg_get_error_errno()
335 +    return s
336 +
337 + def py_sg_str_error(code):
338 +    s = sg_str_error(code)
339 +    return s
340 +
341   def py_sg_get_host_info():
342      cdef sg_host_info *s
343      s = sg_get_host_info()
# Line 320 | Line 469 | def py_sg_get_fs_stats():
469               'total_inodes': s.total_inodes,
470               'used_inodes': s.used_inodes,
471               'free_inodes': s.free_inodes,
472 +             'avail_inodes': s.avail_inodes,
473 +             'io_size': s.io_size,
474 +             'block_size': s.block_size,
475 +             'total_blocks': s.total_blocks,
476 +             'free_blocks': s.free_blocks,
477 +             'used_blocks': s.used_blocks,
478 +             'avail_blocks': s.avail_blocks,
479              }
480          ))
481          s = s + 1
# Line 418 | Line 574 | def py_sg_get_network_iface_stats():
574          list.append(Result(
575              {'interface_name': s.interface_name,
576               'speed': s.speed,
577 <             'dup': s.dup,
577 >             'duplex': s.duplex,
578               'up' : s.up,
579              }
580          ))
# Line 446 | Line 602 | def py_sg_get_page_stats_diff():
602           'pages_pageout': s.pages_pageout,
603          }
604      )
605 +
606 + def py_sg_get_process_stats():
607 +    cdef sg_process_stats *s
608 +    cdef int entries
609 +    s = sg_get_process_stats(&entries)
610 +    if s == NULL:
611 +        raise StatgrabException, 'sg_get_process_stats() returned NULL'
612 +    list = []
613 +    for i from 0 <= i < entries:
614 +        if s.process_name is NULL:
615 +            process_name = ''
616 +        else:
617 +            process_name = s.process_name
618 +        if s.proctitle is NULL:
619 +            proctitle = ''
620 +        else:
621 +            proctitle = s.proctitle
622 +        list.append(Result(
623 +            {'process_name': process_name,
624 +             'proctitle' : proctitle,
625 +             'pid' : s.pid,
626 +             'parent' : s.parent,
627 +             'pgid' : s.pgid,
628 +             'uid' : s.uid,
629 +             'euid' : s.euid,
630 +             'gid' : s.gid,
631 +             'egid' : s.egid,
632 +             'proc_size' : s.proc_size,
633 +             'proc_resident' : s.proc_resident,
634 +             'time_spent' : s.time_spent,
635 +             'cpu_percent' : s.cpu_percent,
636 +             'nice' : s.nice,
637 +             'state' : s.state,
638 +            }
639 +        ))
640 +        s = s + 1
641 +    return list
642  
643   def py_sg_get_process_count():
644      cdef sg_process_count *s

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines