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.15 by tdb, Tue Aug 24 20:43:47 2004 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 145 | Line 187 | cdef extern from "statgrab.h":
187      cdef extern sg_page_stats *sg_get_page_stats()
188      cdef extern sg_page_stats *sg_get_page_stats_diff()
189  
190 +    ctypedef enum sg_process_state:
191 +        SG_PROCESS_STATE_RUNNING
192 +        SG_PROCESS_STATE_SLEEPING
193 +        SG_PROCESS_STATE_STOPPED
194 +        SG_PROCESS_STATE_ZOMBIE
195 +        SG_PROCESS_STATE_UNKNOWN
196 +
197 +    ctypedef struct sg_process_stats:
198 +        char *process_name
199 +        char *proctitle
200 +        pid_t pid
201 +        pid_t parent
202 +        pid_t pgid
203 +        uid_t uid
204 +        uid_t euid
205 +        gid_t gid
206 +        gid_t egid
207 +        unsigned long long proc_size
208 +        unsigned long long proc_resident
209 +        time_t time_spent
210 +        double cpu_percent
211 +        int nice
212 +        sg_process_state state
213 +
214 +    cdef extern sg_process_stats *sg_get_process_stats(int *entries)
215 +
216      ctypedef struct sg_process_count:
217          int total
218          int running
# Line 155 | Line 223 | cdef extern from "statgrab.h":
223      cdef extern sg_process_count *sg_get_process_count()
224  
225  
226 + py_SG_ERROR_NONE = SG_ERROR_NONE
227 + py_SG_ERROR_ASPRINTF = SG_ERROR_ASPRINTF
228 + py_SG_ERROR_DEVSTAT_GETDEVS = SG_ERROR_DEVSTAT_GETDEVS
229 + py_SG_ERROR_DEVSTAT_SELECTDEVS = SG_ERROR_DEVSTAT_SELECTDEVS
230 + py_SG_ERROR_ENOENT = SG_ERROR_ENOENT
231 + py_SG_ERROR_GETIFADDRS = SG_ERROR_GETIFADDRS
232 + py_SG_ERROR_GETMNTINFO = SG_ERROR_GETMNTINFO
233 + py_SG_ERROR_GETPAGESIZE = SG_ERROR_GETPAGESIZE
234 + py_SG_ERROR_KSTAT_DATA_LOOKUP = SG_ERROR_KSTAT_DATA_LOOKUP
235 + py_SG_ERROR_KSTAT_LOOKUP = SG_ERROR_KSTAT_LOOKUP
236 + py_SG_ERROR_KSTAT_OPEN = SG_ERROR_KSTAT_OPEN
237 + py_SG_ERROR_KSTAT_READ = SG_ERROR_KSTAT_READ
238 + py_SG_ERROR_KVM_GETSWAPINFO = SG_ERROR_KVM_GETSWAPINFO
239 + py_SG_ERROR_KVM_OPENFILES = SG_ERROR_KVM_OPENFILES
240 + py_SG_ERROR_MALLOC = SG_ERROR_MALLOC
241 + py_SG_ERROR_OPEN = SG_ERROR_OPEN
242 + py_SG_ERROR_OPENDIR = SG_ERROR_OPENDIR
243 + py_SG_ERROR_PARSE = SG_ERROR_PARSE
244 + py_SG_ERROR_SETEGID = SG_ERROR_SETEGID
245 + py_SG_ERROR_SETEUID = SG_ERROR_SETEUID
246 + py_SG_ERROR_SETMNTENT = SG_ERROR_SETMNTENT
247 + py_SG_ERROR_SOCKET = SG_ERROR_SOCKET
248 + py_SG_ERROR_SWAPCTL = SG_ERROR_SWAPCTL
249 + py_SG_ERROR_SYSCONF = SG_ERROR_SYSCONF
250 + py_SG_ERROR_SYSCTL = SG_ERROR_SYSCTL
251 + py_SG_ERROR_SYSCTLBYNAME = SG_ERROR_SYSCTLBYNAME
252 + py_SG_ERROR_SYSCTLNAMETOMIB = SG_ERROR_SYSCTLNAMETOMIB
253 + py_SG_ERROR_UNAME = SG_ERROR_UNAME
254 + py_SG_ERROR_UNSUPPORTED = SG_ERROR_UNSUPPORTED
255 + py_SG_ERROR_XSW_VER_MISMATCH = SG_ERROR_XSW_VER_MISMATCH
256 +
257   py_SG_IFACE_DUPLEX_FULL = SG_IFACE_DUPLEX_FULL
258   py_SG_IFACE_DUPLEX_HALF = SG_IFACE_DUPLEX_HALF
259   py_SG_IFACE_DUPLEX_UNKNOWN = SG_IFACE_DUPLEX_UNKNOWN
260  
261 + py_SG_PROCESS_STATE_RUNNING = SG_PROCESS_STATE_RUNNING
262 + py_SG_PROCESS_STATE_SLEEPING = SG_PROCESS_STATE_SLEEPING
263 + py_SG_PROCESS_STATE_STOPPED = SG_PROCESS_STATE_STOPPED
264 + py_SG_PROCESS_STATE_ZOMBIE = SG_PROCESS_STATE_ZOMBIE
265 + py_SG_PROCESS_STATE_UNKNOWN = SG_PROCESS_STATE_UNKNOWN
266  
267 +
268   class Result:
269      def __init__(self, attrs):
270          self.attrs = attrs
# Line 189 | Line 294 | def py_sg_drop_privileges():
294      else:
295          return False
296  
297 + def py_sg_set_error(code, arg):
298 +    sg_set_error(code, arg)
299 +
300 + def py_sg_set_error_with_errno(code, arg):
301 +    sg_set_error_with_errno(code, arg)
302 +
303 + def py_sg_get_error():
304 +    cdef sg_error s
305 +    s = sg_get_error()
306 +    return s
307 +
308 + def py_sg_get_error_arg():
309 +    s = sg_get_error_arg()
310 +    return s
311 +
312 + def py_sg_get_error_errno():
313 +    s = sg_get_error_errno()
314 +    return s
315 +
316 + def py_sg_str_error(code):
317 +    s = sg_str_error(code)
318 +    return s
319 +
320   def py_sg_get_host_info():
321      cdef sg_host_info *s
322      s = sg_get_host_info()
# Line 446 | Line 574 | def py_sg_get_page_stats_diff():
574           'pages_pageout': s.pages_pageout,
575          }
576      )
577 +
578 + def py_sg_get_process_stats():
579 +    cdef sg_process_stats *s
580 +    cdef int entries
581 +    s = sg_get_process_stats(&entries)
582 +    if s == NULL:
583 +        raise StatgrabException, 'sg_get_process_stats() returned NULL'
584 +    list = []
585 +    for i from 0 <= i < entries:
586 +        if s.process_name == NULL:
587 +            s.process_name = ''
588 +        if s.proctitle == NULL:
589 +            s.proctitle = ''
590 +        list.append(Result(
591 +            {'process_name': s.process_name,
592 +             'proctitle' : s.proctitle,
593 +             'pid' : s.pid,
594 +             'parent' : s.parent,
595 +             'pgid' : s.pgid,
596 +             'uid' : s.uid,
597 +             'euid' : s.euid,
598 +             'gid' : s.gid,
599 +             'egid' : s.egid,
600 +             'proc_size' : s.proc_size,
601 +             'proc_resident' : s.proc_resident,
602 +             'time_spent' : s.time_spent,
603 +             'cpu_percent' : s.cpu_percent,
604 +             'nice' : s.nice,
605 +             'state' : s.state,
606 +            }
607 +        ))
608 +        s = s + 1
609 +    return list
610  
611   def py_sg_get_process_count():
612      cdef sg_process_count *s

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines