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.14 by tdb, Sun May 30 16:41:03 2004 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines