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.12 by tdb, Sun May 30 15:21:19 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
72 +        char *os_version
73 +        char *platform
74 +        char *hostname
75 +        time_t uptime
76 +
77 +    cdef extern sg_host_info *sg_get_host_info()
78 +
79      ctypedef struct sg_cpu_stats:
80          long long user
81          long long kernel
# Line 33 | Line 86 | cdef extern from "statgrab.h":
86          long long total
87          time_t systime
88  
89 +    cdef extern sg_cpu_stats *sg_get_cpu_stats()
90 +    cdef extern sg_cpu_stats *sg_get_cpu_stats_diff()
91 +
92      ctypedef struct sg_cpu_percents:
93          float user
94          float kernel
# Line 42 | Line 98 | cdef extern from "statgrab.h":
98          float nice
99          time_t time_taken
100  
101 +    cdef extern sg_cpu_percents *sg_get_cpu_percents()
102 +
103      ctypedef struct sg_mem_stats:
104          long long total
105          long long free
106          long long used
107          long long cache
108  
109 +    cdef extern sg_mem_stats *sg_get_mem_stats()
110 +
111      ctypedef struct sg_load_stats:
112          double min1
113          double min5
114          double min15
115  
116 +    cdef extern sg_load_stats *sg_get_load_stats()
117 +
118      ctypedef struct sg_user_stats:
119          char *name_list
120          int num_entries
121  
122 +    cdef extern sg_user_stats *sg_get_user_stats()
123 +
124      ctypedef struct sg_swap_stats:
125          long long total
126          long long used
127          long long free
128  
129 <    ctypedef struct sg_host_info:
66 <        char *os_name
67 <        char *os_release
68 <        char *os_version
69 <        char *platform
70 <        char *hostname
71 <        time_t uptime
129 >    cdef extern sg_swap_stats *sg_get_swap_stats()
130  
131      ctypedef struct sg_fs_stats:
132          char *device_name
# Line 81 | Line 139 | cdef extern from "statgrab.h":
139          long long used_inodes
140          long long free_inodes
141  
142 +    cdef extern sg_fs_stats *sg_get_fs_stats(int *entries)
143 +
144      ctypedef struct sg_disk_io_stats:
145          char *disk_name
146          long long read_bytes
147          long long write_bytes
148          time_t systime
149  
150 <    ctypedef struct sg_process_count:
151 <        int total
92 <        int running
93 <        int sleeping
94 <        int stopped
95 <        int zombie
150 >    cdef extern sg_disk_io_stats *sg_get_disk_io_stats(int *entries)
151 >    cdef extern sg_disk_io_stats *sg_get_disk_io_stats_diff(int *entries)
152  
153      ctypedef struct sg_network_io_stats:
154          char *interface_name
# Line 105 | Line 161 | cdef extern from "statgrab.h":
161          long long collisions
162          time_t systime
163  
164 +    cdef extern sg_network_io_stats *sg_get_network_io_stats(int *entries)
165 +    cdef extern sg_network_io_stats *sg_get_network_io_stats_diff(int *entries)
166 +
167      ctypedef enum sg_iface_duplex:
168          SG_IFACE_DUPLEX_FULL
169          SG_IFACE_DUPLEX_HALF
# Line 116 | Line 175 | cdef extern from "statgrab.h":
175          sg_iface_duplex dup
176          int up
177  
178 +    cdef extern sg_network_iface_stats *sg_get_network_iface_stats(int *entries)
179 +
180      ctypedef struct sg_page_stats:
181          long long pages_pagein
182          long long pages_pageout
183          time_t systime
184  
124    cdef extern sg_cpu_stats *sg_get_cpu_stats()
125    cdef extern sg_cpu_stats *sg_get_cpu_stats_diff()
126    cdef extern sg_cpu_percents *sg_get_cpu_percents()
127    cdef extern sg_mem_stats *sg_get_mem_stats()
128    cdef extern sg_load_stats *sg_get_load_stats()
129    cdef extern sg_user_stats *sg_get_user_stats()
130    cdef extern sg_swap_stats *sg_get_swap_stats()
131    cdef extern sg_host_info *sg_get_host_info()
132    cdef extern sg_fs_stats *sg_get_fs_stats(int *entries)
133    cdef extern sg_disk_io_stats *sg_get_disk_io_stats(int *entries)
134    cdef extern sg_disk_io_stats *sg_get_disk_io_stats_diff(int *entries)
135    cdef extern sg_process_count *sg_get_process_count()
136    cdef extern sg_network_io_stats *sg_get_network_io_stats(int *entries)
137    cdef extern sg_network_io_stats *sg_get_network_io_stats_diff(int *entries)
138    cdef extern sg_network_iface_stats *sg_get_network_iface_stats(int *entries)
185      cdef extern sg_page_stats *sg_get_page_stats()
186      cdef extern sg_page_stats *sg_get_page_stats_diff()
141    cdef extern int sg_init()
142    cdef extern int sg_drop_privileges()
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
217 +        int sleeping
218 +        int stopped
219 +        int zombie
220 +
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 164 | Line 280 | class StatgrabException(Exception):
280          return repr(self.value)
281  
282  
283 + def py_sg_init():
284 +    if sg_init() == 0:
285 +        return True
286 +    else:
287 +        return False
288 +
289 + def py_sg_drop_privileges():
290 +    if sg_drop_privileges() == 0:
291 +        return True
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()
314 +    if s == NULL:
315 +        raise StatgrabException, 'sg_get_host_info() returned NULL'
316 +    return Result(
317 +        {'os_name': s.os_name,
318 +         'os_release': s.os_release,
319 +         'os_version': s.os_version,
320 +         'platform': s.platform,
321 +         'hostname': s.hostname,
322 +         'uptime': s.uptime,
323 +        }
324 +    )
325 +
326   def py_sg_get_cpu_stats():
327      cdef sg_cpu_stats *s
328      s = sg_get_cpu_stats()
# Line 262 | Line 421 | def py_sg_get_swap_stats():
421          }
422      )
423  
265 def py_sg_get_host_info():
266    cdef sg_host_info *s
267    s = sg_get_host_info()
268    if s == NULL:
269        raise StatgrabException, 'sg_get_host_info() returned NULL'
270    return Result(
271        {'os_name': s.os_name,
272         'os_release': s.os_release,
273         'os_version': s.os_version,
274         'platform': s.platform,
275         'hostname': s.hostname,
276         'uptime': s.uptime,
277        }
278    )
279
424   def py_sg_get_fs_stats():
425      cdef sg_fs_stats *s
426      cdef int entries
# Line 336 | Line 480 | def py_sg_get_disk_io_stats_diff():
480          s = s + 1
481      return list
482  
339 def py_sg_get_process_count():
340    cdef sg_process_count *s
341    s = sg_get_process_count()
342    if s == NULL:
343        raise StatgrabException, 'sg_get_process_count() returned NULL'
344    return Result(
345        {'total': s.total,
346         'running': s.running,
347         'sleeping': s.sleeping,
348         'stopped': s.stopped,
349         'zombie': s.zombie,
350        }
351    )
352
483   def py_sg_get_network_io_stats():
484      cdef sg_network_io_stats *s
485      cdef int entries
# Line 436 | Line 566 | def py_sg_get_page_stats_diff():
566          }
567      )
568  
569 < def py_sg_init():
570 <    if sg_init() == 0:
571 <        return True
572 <    else:
573 <        return False
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_drop_privileges():
603 <    if sg_drop_privileges() == 0:
604 <        return True
605 <    else:
606 <        return False
602 > def py_sg_get_process_count():
603 >    cdef sg_process_count *s
604 >    s = sg_get_process_count()
605 >    if s == NULL:
606 >        raise StatgrabException, 'sg_get_process_count() returned NULL'
607 >    return Result(
608 >        {'total': s.total,
609 >         'running': s.running,
610 >         'sleeping': s.sleeping,
611 >         'stopped': s.stopped,
612 >         'zombie': s.zombie,
613 >        }
614 >    )

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines