diff --git a/ChangeLog b/ChangeLog index e99a4704..2a5f2619 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +1999-03-20 Martin Baulig + + Removed all traces of my old table () Linux kernel hack. + + * kernel: Removed. + * sysdeps/kernel: Removed. + * libgtop-sysdeps.m4: Don't check for table (); it does not + exist any longer. + 1999-03-19 Martin Baulig This is *untested* - please read "sysdeps/freebsd/ChangeLog" ! diff --git a/kernel/ChangeLog b/kernel/ChangeLog deleted file mode 100644 index a3efd8d7..00000000 --- a/kernel/ChangeLog +++ /dev/null @@ -1,14 +0,0 @@ -1998-07-21 Martin Baulig - - * table20: New directory for 2.0.xx kernels. - - * table21: New directory for 2.1.xx kernels. - - * *: Moved into `table20' and `table21'. - -1998-06-14 Martin Baulig - - * README: Added README. - - * kernel.patch: Patch for the Linux kernel to add the - new system call. diff --git a/kernel/table.h b/kernel/table.h deleted file mode 100644 index d4959370..00000000 --- a/kernel/table.h +++ /dev/null @@ -1,188 +0,0 @@ -#ifndef _LINUX_TABLE_H -#define _LINUX_TABLE_H - -#ifdef _KERNEL -#include -#else -#define NR_TASKS 512 -#endif - -#define TABLE_KERN_PROC_ALL 0 /* all processes */ -#define TABLE_KERN_PROC_PID 1 -#define TABLE_KERN_PROC_PGRP 2 -#define TABLE_KERN_PROC_SESSION 3 -#define TABLE_KERN_PROC_TTY 4 -#define TABLE_KERN_PROC_UID 5 -#define TABLE_KERN_PROC_RUID 6 - -#define TABLE_KERN_PROC_MASK 15 - -#define TABLE_EXCLUDE_IDLE 0x1000 -#define TABLE_EXCLUDE_SYSTEM 0x2000 -#define TABLE_EXCLUDE_NOTTY 0x4000 - -#define TABLE_VERSION 0 -#define TABLE_CPU 1 -#define TABLE_MEM 2 -#define TABLE_SWAP 3 -#define TABLE_LOADAVG 4 -#define TABLE_UPTIME 5 -#define TABLE_PROCLIST 6 -#define TABLE_PROC_UID 7 -#define TABLE_PROC_MEM 8 -#define TABLE_PROC_SEGMENT 9 -#define TABLE_PROC_TIME 10 -#define TABLE_PROC_STATE 11 -#define TABLE_PROC_SIGNAL 12 -#define TABLE_PROC_KERNEL 13 - -/* CPU Usage (in jiffies = 1/100th seconds) */ - -struct table_cpu -{ - unsigned long total; /* Total CPU Time */ - unsigned long user; /* CPU Time in User Mode */ - unsigned long nice; /* CPU Time in User Mode (nice) */ - unsigned long sys; /* CPU Time in System Mode */ - unsigned long idle; /* CPU Time in the Idle Task */ - unsigned long frequency; /* Tick frequency */ -}; - -/* Memory Usage (in bytes) */ - -struct table_mem -{ - unsigned long total; /* Total physical memory */ - unsigned long used; /* Used memory size */ - unsigned long free; /* Free memory size */ - unsigned long shared; /* Shared memory size */ - unsigned long buffer; /* Size of buffers */ - unsigned long cached; /* Size of cached memory */ -}; - -/* Swap Space (in bytes) */ - -struct table_swap -{ - unsigned long total; /* Total swap space */ - unsigned long used; /* Used swap space */ - unsigned long free; /* Free swap space */ - unsigned long pagein; /* Total # of pages swapped in */ - unsigned long pageout; /* Total # of pages swapped out */ -}; - -/* Load average */ - -struct table_loadavg -{ - double loadavg [3]; - unsigned nr_running; - unsigned nr_tasks; - unsigned last_pid; -}; - -/* Uptime */ - -struct table_uptime -{ - unsigned long uptime; - unsigned long idle; -}; - -/* Process list. */ - -struct proclist_args -{ - int which, arg; -}; - -struct table_proclist -{ - int nr_running, nr_tasks, last_pid; - unsigned pids [NR_TASKS]; -}; - -/* Information about processes. */ - -struct table_proc_state -{ - long state; - unsigned long flags; - char comm[16]; - int uid, gid; -}; - -struct table_proc_uid -{ - int uid, euid, suid, fsuid; - int gid, egid, sgid, fsgid; - int pid, pgrp, ppid; - int session; - unsigned int tty; - int tpgid; - long priority; - long counter; - long def_priority; -}; - -struct table_proc_mem -{ - unsigned long context; - unsigned long start_code, end_code, start_data, end_data; - unsigned long start_brk, brk, start_stack, start_mmap; - unsigned long arg_start, arg_end, env_start, env_end; - unsigned long rss, rlim, total_vm, locked_vm; -}; - -struct table_proc_segment -{ - unsigned long vsize; - unsigned long size, resident, shared; - unsigned long trs, lrs, drs, srs, dt; -}; - -struct table_proc_time -{ - long utime, stime, cutime, cstime, start_time; - unsigned long timeout, policy, rt_priority; - unsigned long it_real_value, it_prof_value, it_virt_value; - unsigned long it_real_incr, it_prof_incr, it_virt_incr; -}; - -struct table_proc_signal -{ - unsigned long long signal, - blocked, /* bitmap of masked signals */ - ignored, /* mask of ignored signals */ - caught; /* mask of caught signals */ -}; - -struct table_proc_kernel -{ - unsigned long keip, kesp, wchan; - unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt; - unsigned long nswap, cnswap; -}; - -/* Union */ - -union table -{ - struct table_cpu cpu; - struct table_mem mem; - struct table_swap swap; - struct table_loadavg loadavg; - struct table_uptime uptime; - struct table_proclist proclist; - struct table_proc_uid proc_uid; - struct table_proc_mem proc_mem; - struct table_proc_segment proc_segment; - struct table_proc_time proc_time; - struct table_proc_state proc_state; - struct table_proc_signal proc_signal; - struct table_proc_kernel proc_kernel; -}; - -#endif /* _LINUX_IPC_H */ - - diff --git a/kernel/table20/Makefile b/kernel/table20/Makefile deleted file mode 100644 index d24e3ba8..00000000 --- a/kernel/table20/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -# -# Makefile for the linux system information tables. -# -# Note! Dependencies are done automagically by 'make dep', which also -# removes any old dependencies. DON'T put your own dependencies here -# unless it's something special (ie not a .c file). -# -# Note 2! The CFLAGS definition is now in the main makefile... - -O_TARGET := table.o -O_OBJS := main.o - -include $(TOPDIR)/Rules.make diff --git a/kernel/table20/README b/kernel/table20/README deleted file mode 100644 index 88d26bec..00000000 --- a/kernel/table20/README +++ /dev/null @@ -1,21 +0,0 @@ -This is a new system call `table ()' for the Linux table. It is faster -than reading from /proc and can be used to fetch all information required -for libgtop until whe have some other function (extended sysctl, ...) in -standard kernels. - -I didn't want to change sysctl or some other function myself cause this may -cause other applications relying upon those function to fail. This is -something for the ``real'' kernel gurus ... - -To use this new system call for libgtop, do the following: - -* Copy this directory to /usr/src/linux/table -* Make /usr/src/linux/include/linux/table.h symlink to /usr/src/linux/table/table.h -* Apply the patch `kernel.patch' to the kernel, compile, install and reboot -* Recompile libgtop (remove `config.cache' and run the `autogen.sh' again). - -If you want to change and/or add something - feel free to do so ! - -Have fun, - -Martin diff --git a/kernel/table20/entry-i386.S b/kernel/table20/entry-i386.S deleted file mode 100644 index 994fe27c..00000000 --- a/kernel/table20/entry-i386.S +++ /dev/null @@ -1,706 +0,0 @@ -/* - * linux/arch/i386/entry.S - * - * Copyright (C) 1991, 1992 Linus Torvalds - */ - -/* - * entry.S contains the system-call and fault low-level handling routines. - * This also contains the timer-interrupt handler, as well as all interrupts - * and faults that can result in a task-switch. - * - * NOTE: This code handles signal-recognition, which happens every time - * after a timer-interrupt and after each system call. - * - * I changed all the .align's to 4 (16 byte alignment), as that's faster - * on a 486. - * - * Stack layout in 'ret_from_system_call': - * ptrace needs to have all regs on the stack. - * if the order here is changed, it needs to be - * updated in fork.c:copy_process, signal.c:do_signal, - * ptrace.c and ptrace.h - * - * 0(%esp) - %ebx - * 4(%esp) - %ecx - * 8(%esp) - %edx - * C(%esp) - %esi - * 10(%esp) - %edi - * 14(%esp) - %ebp - * 18(%esp) - %eax - * 1C(%esp) - %ds - * 20(%esp) - %es - * 24(%esp) - %fs - * 28(%esp) - %gs - * 2C(%esp) - orig_eax - * 30(%esp) - %eip - * 34(%esp) - %cs - * 38(%esp) - %eflags - * 3C(%esp) - %oldesp - * 40(%esp) - %oldss - */ - -#include -#include -#include -#define ASSEMBLY -#include - -EBX = 0x00 -ECX = 0x04 -EDX = 0x08 -ESI = 0x0C -EDI = 0x10 -EBP = 0x14 -EAX = 0x18 -DS = 0x1C -ES = 0x20 -FS = 0x24 -GS = 0x28 -ORIG_EAX = 0x2C -EIP = 0x30 -CS = 0x34 -EFLAGS = 0x38 -OLDESP = 0x3C -OLDSS = 0x40 - -CF_MASK = 0x00000001 -IF_MASK = 0x00000200 -NT_MASK = 0x00004000 -VM_MASK = 0x00020000 - -/* - * these are offsets into the task-struct. - */ -state = 0 -counter = 4 -priority = 8 -signal = 12 -blocked = 16 -flags = 20 -dbgreg6 = 52 -dbgreg7 = 56 -exec_domain = 60 - -ENOSYS = 38 - -#define SAVE_ALL \ - cld; \ - push %gs; \ - push %fs; \ - push %es; \ - push %ds; \ - pushl %eax; \ - pushl %ebp; \ - pushl %edi; \ - pushl %esi; \ - pushl %edx; \ - pushl %ecx; \ - pushl %ebx; \ - movl $(KERNEL_DS),%edx; \ - mov %dx,%ds; \ - mov %dx,%es; \ - movl $(USER_DS),%edx; \ - mov %dx,%fs; - -#ifdef __SMP__ - -#define GET_PROCESSOR_ID \ - movl SYMBOL_NAME(apic_reg), %edx; \ - movl 32(%edx), %eax;\ - movl %eax,SYMBOL_NAME(apic_retval); \ - shrl $24,%eax; \ - andb $0x0F,%al; - -/* - * Get the processor ID multiplied by 4 - */ - -#define GET_PROCESSOR_OFFSET(x) \ - movl SYMBOL_NAME(apic_reg), x ; \ - movl 32( x ), x ; \ - shrl $22, x ; \ - andl $0x3C, x ; - -/* macro LEAVE_KERNEL decrements kernel_counter and resets kernel_flag and - saves processor variables if zero */ -#define LEAVE_KERNEL \ - pushfl; \ - cli; \ - GET_PROCESSOR_ID \ - btrl $ SMP_FROM_SYSCALL,SYMBOL_NAME(smp_proc_in_lock)(,%eax,4); \ - decl SYMBOL_NAME(syscall_count); \ - decl SYMBOL_NAME(kernel_counter); \ - jnz 1f; \ - movb SYMBOL_NAME(saved_active_kernel_processor), %al; \ - movb %al, SYMBOL_NAME(active_kernel_processor); \ - cmpb $(NO_PROC_ID), %al; \ - jnz 1f; \ - lock; \ - btrl $0, SYMBOL_NAME(kernel_flag); \ -1: popfl; - -/* macro ENTER_KERNEL waits for entering the kernel, increments - kernel_counter, and reloads the processor variables if necessary - uses : %eax, %edx (pushed and popped) - - Note: We go to great pains to minimise the number of locked operations. - We want to spin without locking, and lock when we attempt an update. - The pentium has a MESI cache so the spin without lock will exit when - another CPU write invalidates our cache, and the lock is avoided when - possible so we don't play ping-pong games with the cache line. - -*/ - -#ifndef __SMP_PROF__ - -#define SMP_PROF_A -#define SMP_PROF_B - -#else - -#define SMP_PROF_A movl $0,SYMBOL_NAME(smp_spins_syscall_cur)(,%eax,4); -#define SMP_PROF_B incl SYMBOL_NAME(smp_spins_syscall)(,%eax,4); \ - incl SYMBOL_NAME(smp_spins_syscall_cur)(,%eax,4); -#endif - -#define ENTER_KERNEL \ - pushl %eax; \ - pushl %ebx; \ - pushl %ecx; \ - pushl %edx; \ - pushfl; \ - cli; \ - movl $6000, %ebx; \ - movl SYMBOL_NAME(smp_loops_per_tick), %ecx; \ - GET_PROCESSOR_ID \ - btsl $ SMP_FROM_SYSCALL,SYMBOL_NAME(smp_proc_in_lock)(,%eax,4); \ - SMP_PROF_A \ -1: lock; \ - btsl $0, SYMBOL_NAME(kernel_flag); \ - jnc 3f; \ - cmpb SYMBOL_NAME(active_kernel_processor), %al; \ - je 4f; \ -2: SMP_PROF_B \ - btl %eax, SYMBOL_NAME(smp_invalidate_needed); \ - jnc 5f; \ - lock; \ - btrl %eax, SYMBOL_NAME(smp_invalidate_needed); \ - jnc 5f; \ - movl %cr3,%edx; \ - movl %edx,%cr3; \ -5: sti; \ - decl %ecx; \ - cli; \ - jne 7f; \ - decl %ebx; \ - jne 6f; \ - call SYMBOL_NAME(non_irq_deadlock_detected); \ -6: movl SYMBOL_NAME(smp_loops_per_tick), %ecx; \ - cmpb SYMBOL_NAME(boot_cpu_id), %al; \ - jne 7f; \ - incl SYMBOL_NAME(jiffies); \ -7: btl $0, SYMBOL_NAME(kernel_flag); \ - jc 2b; \ - jmp 1b; \ -3: movb %al, SYMBOL_NAME(active_kernel_processor); \ -4: incl SYMBOL_NAME(kernel_counter); \ - incl SYMBOL_NAME(syscall_count); \ - popfl; \ - popl %edx; \ - popl %ecx; \ - popl %ebx; \ - popl %eax; - - -#define RESTORE_ALL \ - cmpw $(KERNEL_CS),CS(%esp); \ - je 1f; \ - GET_PROCESSOR_OFFSET(%edx) \ - movl SYMBOL_NAME(current_set)(,%edx), %eax ; ; \ - movl dbgreg7(%eax),%ebx; \ - movl %ebx,%db7; \ -1: LEAVE_KERNEL \ - popl %ebx; \ - popl %ecx; \ - popl %edx; \ - popl %esi; \ - popl %edi; \ - popl %ebp; \ - popl %eax; \ - pop %ds; \ - pop %es; \ - pop %fs; \ - pop %gs; \ - addl $4,%esp; \ - iret - -#else - -#define RESTORE_ALL \ - cmpw $(KERNEL_CS),CS(%esp); \ - je 1f; \ - movl SYMBOL_NAME(current_set),%eax; \ - movl dbgreg7(%eax),%ebx; \ - movl %ebx,%db7; \ -1: \ - popl %ebx; \ - popl %ecx; \ - popl %edx; \ - popl %esi; \ - popl %edi; \ - popl %ebp; \ - popl %eax; \ - pop %ds; \ - pop %es; \ - pop %fs; \ - pop %gs; \ - addl $4,%esp; \ - iret -#endif - -ENTRY(lcall7) - pushfl # We get a different stack layout with call gates, - pushl %eax # which has to be cleaned up later.. - SAVE_ALL -#ifdef __SMP__ - ENTER_KERNEL -#endif - movl EIP(%esp),%eax # due to call gates, this is eflags, not eip.. - movl CS(%esp),%edx # this is eip.. - movl EFLAGS(%esp),%ecx # and this is cs.. - movl %eax,EFLAGS(%esp) # - movl %edx,EIP(%esp) # Now we move them to their "normal" places - movl %ecx,CS(%esp) # - movl %esp,%eax -#ifdef __SMP__ - GET_PROCESSOR_OFFSET(%edx) # Processor offset into edx - movl SYMBOL_NAME(current_set)(,%edx),%edx -#else - movl SYMBOL_NAME(current_set),%edx -#endif - pushl %eax - movl exec_domain(%edx),%edx # Get the execution domain - movl 4(%edx),%edx # Get the lcall7 handler for the domain - call *%edx - popl %eax - jmp ret_from_sys_call - - ALIGN -handle_bottom_half: - incl SYMBOL_NAME(intr_count) - call SYMBOL_NAME(do_bottom_half) - decl SYMBOL_NAME(intr_count) - jmp 9f - ALIGN -reschedule: - pushl $ret_from_sys_call - jmp SYMBOL_NAME(schedule) # test - -ENTRY(system_call) - pushl %eax # save orig_eax - SAVE_ALL -#ifdef __SMP__ - ENTER_KERNEL -#endif - movl $-ENOSYS,EAX(%esp) - cmpl $(NR_syscalls),%eax - jae ret_from_sys_call - movl SYMBOL_NAME(sys_call_table)(,%eax,4),%eax - testl %eax,%eax - je ret_from_sys_call -#ifdef __SMP__ - GET_PROCESSOR_OFFSET(%edx) - movl SYMBOL_NAME(current_set)(,%edx),%ebx -#else - movl SYMBOL_NAME(current_set),%ebx -#endif - andl $~CF_MASK,EFLAGS(%esp) # clear carry - assume no errors - movl %db6,%edx - movl %edx,dbgreg6(%ebx) # save current hardware debugging status - testb $0x20,flags(%ebx) # PF_TRACESYS - jne 1f - call *%eax - movl %eax,EAX(%esp) # save the return value - jmp ret_from_sys_call - ALIGN -1: call SYMBOL_NAME(syscall_trace) - movl ORIG_EAX(%esp),%eax - call SYMBOL_NAME(sys_call_table)(,%eax,4) - movl %eax,EAX(%esp) # save the return value -#ifdef __SMP__ - GET_PROCESSOR_OFFSET(%eax) - movl SYMBOL_NAME(current_set)(,%eax),%eax -#else - movl SYMBOL_NAME(current_set),%eax -#endif - call SYMBOL_NAME(syscall_trace) - - ALIGN - .globl ret_from_sys_call -ret_from_sys_call: - cmpl $0,SYMBOL_NAME(intr_count) - jne 2f -9: movl SYMBOL_NAME(bh_mask),%eax - andl SYMBOL_NAME(bh_active),%eax - jne handle_bottom_half -#ifdef __SMP__ - cmpb $(NO_PROC_ID), SYMBOL_NAME(saved_active_kernel_processor) - jne 2f -#endif - movl EFLAGS(%esp),%eax # check VM86 flag: CS/SS are - testl $(VM_MASK),%eax # different then - jne 1f - cmpw $(KERNEL_CS),CS(%esp) # was old code segment supervisor ? - je 2f -1: sti - orl $(IF_MASK),%eax # these just try to make sure - andl $~NT_MASK,%eax # the program doesn't do anything - movl %eax,EFLAGS(%esp) # stupid - cmpl $0,SYMBOL_NAME(need_resched) - jne reschedule -#ifdef __SMP__ - GET_PROCESSOR_OFFSET(%eax) - movl SYMBOL_NAME(current_set)(,%eax), %eax -#else - movl SYMBOL_NAME(current_set),%eax -#endif - cmpl SYMBOL_NAME(task),%eax # task[0] cannot have signals - je 2f - movl blocked(%eax),%ecx - movl %ecx,%ebx # save blocked in %ebx for signal handling - notl %ecx - andl signal(%eax),%ecx - jne signal_return -2: RESTORE_ALL - ALIGN -signal_return: - movl %esp,%ecx - pushl %ecx - testl $(VM_MASK),EFLAGS(%ecx) - jne v86_signal_return - pushl %ebx - call SYMBOL_NAME(do_signal) - popl %ebx - popl %ebx - RESTORE_ALL - ALIGN -v86_signal_return: - call SYMBOL_NAME(save_v86_state) - movl %eax,%esp - pushl %eax - pushl %ebx - call SYMBOL_NAME(do_signal) - popl %ebx - popl %ebx - RESTORE_ALL - -ENTRY(divide_error) - pushl $0 # no error code - pushl $ SYMBOL_NAME(do_divide_error) - ALIGN -error_code: - push %fs - push %es - push %ds - pushl %eax - xorl %eax,%eax - pushl %ebp - pushl %edi - pushl %esi - pushl %edx - decl %eax # eax = -1 - pushl %ecx - pushl %ebx - cld - xorl %ebx,%ebx # zero ebx - xchgl %eax, ORIG_EAX(%esp) # orig_eax (get the error code. ) - mov %gs,%bx # get the lower order bits of gs - movl %esp,%edx - xchgl %ebx, GS(%esp) # get the address and save gs. - pushl %eax # push the error code - pushl %edx - movl $(KERNEL_DS),%edx - mov %dx,%ds - mov %dx,%es - movl $(USER_DS),%edx - mov %dx,%fs -#ifdef __SMP__ - ENTER_KERNEL - GET_PROCESSOR_OFFSET(%eax) - movl SYMBOL_NAME(current_set)(,%eax), %eax -#else - movl SYMBOL_NAME(current_set),%eax -#endif - movl %db6,%edx - movl %edx,dbgreg6(%eax) # save current hardware debugging status - call *%ebx - addl $8,%esp - jmp ret_from_sys_call - -ENTRY(coprocessor_error) - pushl $0 - pushl $ SYMBOL_NAME(do_coprocessor_error) - jmp error_code - -ENTRY(device_not_available) - pushl $-1 # mark this as an int - SAVE_ALL -#ifdef __SMP__ - ENTER_KERNEL -#endif - pushl $ret_from_sys_call - movl %cr0,%eax - testl $0x4,%eax # EM (math emulation bit) - je SYMBOL_NAME(math_state_restore) - pushl $0 # temporary storage for ORIG_EIP - call SYMBOL_NAME(math_emulate) - addl $4,%esp - ret - -ENTRY(debug) - pushl $0 - pushl $ SYMBOL_NAME(do_debug) - jmp error_code - -ENTRY(nmi) - pushl $0 - pushl $ SYMBOL_NAME(do_nmi) - jmp error_code - -ENTRY(int3) - pushl $0 - pushl $ SYMBOL_NAME(do_int3) - jmp error_code - -ENTRY(overflow) - pushl $0 - pushl $ SYMBOL_NAME(do_overflow) - jmp error_code - -ENTRY(bounds) - pushl $0 - pushl $ SYMBOL_NAME(do_bounds) - jmp error_code - -ENTRY(invalid_op) - pushl $0 - pushl $ SYMBOL_NAME(do_invalid_op) - jmp error_code - -ENTRY(coprocessor_segment_overrun) - pushl $0 - pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun) - jmp error_code - -ENTRY(reserved) - pushl $0 - pushl $ SYMBOL_NAME(do_reserved) - jmp error_code - -ENTRY(double_fault) - pushl $ SYMBOL_NAME(do_double_fault) - jmp error_code - -ENTRY(invalid_TSS) - pushl $ SYMBOL_NAME(do_invalid_TSS) - jmp error_code - -ENTRY(segment_not_present) - pushl $ SYMBOL_NAME(do_segment_not_present) - jmp error_code - -ENTRY(stack_segment) - pushl $ SYMBOL_NAME(do_stack_segment) - jmp error_code - -ENTRY(general_protection) - pushl $ SYMBOL_NAME(do_general_protection) - jmp error_code - -ENTRY(alignment_check) - pushl $ SYMBOL_NAME(do_alignment_check) - jmp error_code - -ENTRY(page_fault) - pushl $ SYMBOL_NAME(do_page_fault) - jmp error_code - -ENTRY(spurious_interrupt_bug) - pushl $0 - pushl $ SYMBOL_NAME(do_spurious_interrupt_bug) - jmp error_code - -.data -ENTRY(sys_call_table) - .long SYMBOL_NAME(sys_setup) /* 0 */ - .long SYMBOL_NAME(sys_exit) - .long SYMBOL_NAME(sys_fork) - .long SYMBOL_NAME(sys_read) - .long SYMBOL_NAME(sys_write) - .long SYMBOL_NAME(sys_open) /* 5 */ - .long SYMBOL_NAME(sys_close) - .long SYMBOL_NAME(sys_waitpid) - .long SYMBOL_NAME(sys_creat) - .long SYMBOL_NAME(sys_link) - .long SYMBOL_NAME(sys_unlink) /* 10 */ - .long SYMBOL_NAME(sys_execve) - .long SYMBOL_NAME(sys_chdir) - .long SYMBOL_NAME(sys_time) - .long SYMBOL_NAME(sys_mknod) - .long SYMBOL_NAME(sys_chmod) /* 15 */ - .long SYMBOL_NAME(sys_chown) - .long SYMBOL_NAME(sys_break) - .long SYMBOL_NAME(sys_stat) - .long SYMBOL_NAME(sys_lseek) - .long SYMBOL_NAME(sys_getpid) /* 20 */ - .long SYMBOL_NAME(sys_mount) - .long SYMBOL_NAME(sys_umount) - .long SYMBOL_NAME(sys_setuid) - .long SYMBOL_NAME(sys_getuid) - .long SYMBOL_NAME(sys_stime) /* 25 */ - .long SYMBOL_NAME(sys_ptrace) - .long SYMBOL_NAME(sys_alarm) - .long SYMBOL_NAME(sys_fstat) - .long SYMBOL_NAME(sys_pause) - .long SYMBOL_NAME(sys_utime) /* 30 */ - .long SYMBOL_NAME(sys_stty) - .long SYMBOL_NAME(sys_gtty) - .long SYMBOL_NAME(sys_access) - .long SYMBOL_NAME(sys_nice) - .long SYMBOL_NAME(sys_ftime) /* 35 */ - .long SYMBOL_NAME(sys_sync) - .long SYMBOL_NAME(sys_kill) - .long SYMBOL_NAME(sys_rename) - .long SYMBOL_NAME(sys_mkdir) - .long SYMBOL_NAME(sys_rmdir) /* 40 */ - .long SYMBOL_NAME(sys_dup) - .long SYMBOL_NAME(sys_pipe) - .long SYMBOL_NAME(sys_times) - .long SYMBOL_NAME(sys_prof) - .long SYMBOL_NAME(sys_brk) /* 45 */ - .long SYMBOL_NAME(sys_setgid) - .long SYMBOL_NAME(sys_getgid) - .long SYMBOL_NAME(sys_signal) - .long SYMBOL_NAME(sys_geteuid) - .long SYMBOL_NAME(sys_getegid) /* 50 */ - .long SYMBOL_NAME(sys_acct) - .long SYMBOL_NAME(sys_phys) - .long SYMBOL_NAME(sys_lock) - .long SYMBOL_NAME(sys_ioctl) - .long SYMBOL_NAME(sys_fcntl) /* 55 */ - .long SYMBOL_NAME(sys_mpx) - .long SYMBOL_NAME(sys_setpgid) - .long SYMBOL_NAME(sys_ulimit) - .long SYMBOL_NAME(sys_olduname) - .long SYMBOL_NAME(sys_umask) /* 60 */ - .long SYMBOL_NAME(sys_chroot) - .long SYMBOL_NAME(sys_ustat) - .long SYMBOL_NAME(sys_dup2) - .long SYMBOL_NAME(sys_getppid) - .long SYMBOL_NAME(sys_getpgrp) /* 65 */ - .long SYMBOL_NAME(sys_setsid) - .long SYMBOL_NAME(sys_sigaction) - .long SYMBOL_NAME(sys_sgetmask) - .long SYMBOL_NAME(sys_ssetmask) - .long SYMBOL_NAME(sys_setreuid) /* 70 */ - .long SYMBOL_NAME(sys_setregid) - .long SYMBOL_NAME(sys_sigsuspend) - .long SYMBOL_NAME(sys_sigpending) - .long SYMBOL_NAME(sys_sethostname) - .long SYMBOL_NAME(sys_setrlimit) /* 75 */ - .long SYMBOL_NAME(sys_getrlimit) - .long SYMBOL_NAME(sys_getrusage) - .long SYMBOL_NAME(sys_gettimeofday) - .long SYMBOL_NAME(sys_settimeofday) - .long SYMBOL_NAME(sys_getgroups) /* 80 */ - .long SYMBOL_NAME(sys_setgroups) - .long SYMBOL_NAME(old_select) - .long SYMBOL_NAME(sys_symlink) - .long SYMBOL_NAME(sys_lstat) - .long SYMBOL_NAME(sys_readlink) /* 85 */ - .long SYMBOL_NAME(sys_uselib) - .long SYMBOL_NAME(sys_swapon) - .long SYMBOL_NAME(sys_reboot) - .long SYMBOL_NAME(old_readdir) - .long SYMBOL_NAME(old_mmap) /* 90 */ - .long SYMBOL_NAME(sys_munmap) - .long SYMBOL_NAME(sys_truncate) - .long SYMBOL_NAME(sys_ftruncate) - .long SYMBOL_NAME(sys_fchmod) - .long SYMBOL_NAME(sys_fchown) /* 95 */ - .long SYMBOL_NAME(sys_getpriority) - .long SYMBOL_NAME(sys_setpriority) - .long SYMBOL_NAME(sys_profil) - .long SYMBOL_NAME(sys_statfs) - .long SYMBOL_NAME(sys_fstatfs) /* 100 */ - .long SYMBOL_NAME(sys_ioperm) - .long SYMBOL_NAME(sys_socketcall) - .long SYMBOL_NAME(sys_syslog) - .long SYMBOL_NAME(sys_setitimer) - .long SYMBOL_NAME(sys_getitimer) /* 105 */ - .long SYMBOL_NAME(sys_newstat) - .long SYMBOL_NAME(sys_newlstat) - .long SYMBOL_NAME(sys_newfstat) - .long SYMBOL_NAME(sys_uname) - .long SYMBOL_NAME(sys_iopl) /* 110 */ - .long SYMBOL_NAME(sys_vhangup) - .long SYMBOL_NAME(sys_idle) - .long SYMBOL_NAME(sys_vm86old) - .long SYMBOL_NAME(sys_wait4) - .long SYMBOL_NAME(sys_swapoff) /* 115 */ - .long SYMBOL_NAME(sys_sysinfo) - .long SYMBOL_NAME(sys_ipc) - .long SYMBOL_NAME(sys_fsync) - .long SYMBOL_NAME(sys_sigreturn) - .long SYMBOL_NAME(sys_clone) /* 120 */ - .long SYMBOL_NAME(sys_setdomainname) - .long SYMBOL_NAME(sys_newuname) - .long SYMBOL_NAME(sys_modify_ldt) - .long SYMBOL_NAME(sys_adjtimex) - .long SYMBOL_NAME(sys_mprotect) /* 125 */ - .long SYMBOL_NAME(sys_sigprocmask) - .long SYMBOL_NAME(sys_create_module) - .long SYMBOL_NAME(sys_init_module) - .long SYMBOL_NAME(sys_delete_module) - .long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */ - .long SYMBOL_NAME(sys_quotactl) - .long SYMBOL_NAME(sys_getpgid) - .long SYMBOL_NAME(sys_fchdir) - .long SYMBOL_NAME(sys_bdflush) - .long SYMBOL_NAME(sys_sysfs) /* 135 */ - .long SYMBOL_NAME(sys_personality) - .long 0 /* for afs_syscall */ - .long SYMBOL_NAME(sys_setfsuid) - .long SYMBOL_NAME(sys_setfsgid) - .long SYMBOL_NAME(sys_llseek) /* 140 */ - .long SYMBOL_NAME(sys_getdents) - .long SYMBOL_NAME(sys_select) - .long SYMBOL_NAME(sys_flock) - .long SYMBOL_NAME(sys_msync) - .long SYMBOL_NAME(sys_readv) /* 145 */ - .long SYMBOL_NAME(sys_writev) - .long SYMBOL_NAME(sys_getsid) - .long SYMBOL_NAME(sys_fdatasync) - .long SYMBOL_NAME(sys_sysctl) - .long SYMBOL_NAME(sys_mlock) /* 150 */ - .long SYMBOL_NAME(sys_munlock) - .long SYMBOL_NAME(sys_mlockall) - .long SYMBOL_NAME(sys_munlockall) - .long SYMBOL_NAME(sys_sched_setparam) - .long SYMBOL_NAME(sys_sched_getparam) /* 155 */ - .long SYMBOL_NAME(sys_sched_setscheduler) - .long SYMBOL_NAME(sys_sched_getscheduler) - .long SYMBOL_NAME(sys_sched_yield) - .long SYMBOL_NAME(sys_sched_get_priority_max) - .long SYMBOL_NAME(sys_sched_get_priority_min) /* 160 */ - .long SYMBOL_NAME(sys_sched_rr_get_interval) - .long SYMBOL_NAME(sys_nanosleep) - .long SYMBOL_NAME(sys_mremap) - .long 0,0 - .long SYMBOL_NAME(sys_vm86) - .long 0,0,0,0 /* 170 */ - .long 0,0,0,0,0,0,0,0,0,0 /* 180 */ - .long 0,0,0,0,0,0,0 - .long SYMBOL_NAME(sys_table) - .space (NR_syscalls-188)*4 diff --git a/kernel/table20/kernel.patch b/kernel/table20/kernel.patch deleted file mode 100644 index 37654b3d..00000000 --- a/kernel/table20/kernel.patch +++ /dev/null @@ -1,51 +0,0 @@ -diff -ur linux-2.0.32/Makefile linux-hacked/Makefile ---- linux-2.0.32/Makefile Fri Nov 7 19:51:05 1997 -+++ linux-hacked/Makefile Thu Jun 11 20:41:12 1998 -@@ -87,7 +87,7 @@ - # standard CFLAGS - # - --CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strength-reduce -+CFLAGS = -Wall -Wstrict-prototypes -g -O2 -fomit-frame-pointer -fno-strength-reduce - - ifdef CONFIG_CPP - CFLAGS := $(CFLAGS) -x c++ -@@ -113,12 +113,12 @@ - # Include the make variables (CC, etc...) - # - --ARCHIVES =kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o net/network.a -+ARCHIVES =kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o net/network.a table/table.o - FILESYSTEMS =fs/filesystems.a - DRIVERS =drivers/block/block.a \ - drivers/char/char.a - LIBS =$(TOPDIR)/lib/lib.a --SUBDIRS =kernel drivers mm fs net ipc lib -+SUBDIRS =kernel drivers mm fs net ipc lib table - - ifeq ($(CONFIG_ISDN),y) - DRIVERS := $(DRIVERS) drivers/isdn/isdn.a -diff -ur linux-2.0.32/arch/i386/kernel/entry.S linux-hacked/arch/i386/kernel/entry.S ---- linux-2.0.32/arch/i386/kernel/entry.S Tue Sep 16 23:42:45 1997 -+++ linux-hacked/arch/i386/kernel/entry.S Thu Jun 11 21:37:20 1998 -@@ -699,4 +699,8 @@ - .long SYMBOL_NAME(sys_mremap) - .long 0,0 - .long SYMBOL_NAME(sys_vm86) -- .space (NR_syscalls-166)*4 -+ .long 0,0,0,0 /* 170 */ -+ .long 0,0,0,0,0,0,0,0,0,0 /* 180 */ -+ .long 0,0,0,0,0,0,0 -+ .long SYMBOL_NAME(sys_table) -+ .space (NR_syscalls-188)*4 -diff -ur linux-2.0.32/include/asm-i386/unistd.h linux-hacked/include/asm-i386/unistd.h ---- linux-2.0.32/include/asm-i386/unistd.h Fri Mar 22 07:34:02 1996 -+++ linux-hacked/include/asm-i386/unistd.h Thu Jun 11 21:37:03 1998 -@@ -169,6 +169,7 @@ - #define __NR_sched_rr_get_interval 161 - #define __NR_nanosleep 162 - #define __NR_mremap 163 -+#define __NR_table 188 - - /* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */ - #define _syscall0(type,name) \ diff --git a/kernel/table20/main.c b/kernel/table20/main.c deleted file mode 100644 index 97950afb..00000000 --- a/kernel/table20/main.c +++ /dev/null @@ -1,468 +0,0 @@ -/* - * linux/table/table_impl.c - * Copyright (C) 1998 Martin Baulig - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include "version.h" - -#if defined(__i386__) -# define KSTK_EIP(tsk) (((unsigned long *)tsk->kernel_stack_page)[1019]) -# define KSTK_ESP(tsk) (((unsigned long *)tsk->kernel_stack_page)[1022]) -#elif defined(__alpha__) - /* - * See arch/alpha/kernel/ptrace.c for details. - */ -# define PT_REG(reg) (PAGE_SIZE - sizeof(struct pt_regs) \ - + (long)&((struct pt_regs *)0)->reg) -# define KSTK_EIP(tsk) (*(unsigned long *)(tsk->kernel_stack_page + PT_REG(pc))) -# define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->tss.usp) -#elif defined(__sparc__) -# define PT_REG(reg) (PAGE_SIZE - sizeof(struct pt_regs) \ - + (long)&((struct pt_regs *)0)->reg) -# define KSTK_EIP(tsk) (*(unsigned long *)(tsk->kernel_stack_page + PT_REG(pc))) -# define KSTK_ESP(tsk) (*(unsigned long *)(tsk->kernel_stack_page + PT_REG(u_regs[UREG_FP]))) -#endif - -static struct task_struct * -get_task (pid_t pid) -{ - struct task_struct ** p; - - p = task; - while (++p < task+NR_TASKS) { - if (*p && (*p)->pid == pid) - return *p; - } - - return NULL; -} - -static inline void statm_pte_range(pmd_t * pmd, unsigned long address, unsigned long size, - int * pages, int * shared, int * dirty, int * total) -{ - pte_t * pte; - unsigned long end; - - if (pmd_none(*pmd)) - return; - if (pmd_bad(*pmd)) { - printk("statm_pte_range: bad pmd (%08lx)\n", pmd_val(*pmd)); - pmd_clear(pmd); - return; - } - pte = pte_offset(pmd, address); - address &= ~PMD_MASK; - end = address + size; - if (end > PMD_SIZE) - end = PMD_SIZE; - do { - pte_t page = *pte; - - address += PAGE_SIZE; - pte++; - if (pte_none(page)) - continue; - ++*total; - if (!pte_present(page)) - continue; - ++*pages; - if (pte_dirty(page)) - ++*dirty; - if (pte_page(page) >= high_memory) - continue; - if (mem_map[MAP_NR(pte_page(page))].count > 1) - ++*shared; - } while (address < end); -} - -static inline void statm_pmd_range(pgd_t * pgd, unsigned long address, unsigned long size, - int * pages, int * shared, int * dirty, int * total) -{ - pmd_t * pmd; - unsigned long end; - - if (pgd_none(*pgd)) - return; - if (pgd_bad(*pgd)) { - printk("statm_pmd_range: bad pgd (%08lx)\n", pgd_val(*pgd)); - pgd_clear(pgd); - return; - } - pmd = pmd_offset(pgd, address); - address &= ~PGDIR_MASK; - end = address + size; - if (end > PGDIR_SIZE) - end = PGDIR_SIZE; - do { - statm_pte_range(pmd, address, end - address, pages, shared, dirty, total); - address = (address + PMD_SIZE) & PMD_MASK; - pmd++; - } while (address < end); -} - -static void statm_pgd_range(pgd_t * pgd, unsigned long address, unsigned long end, - int * pages, int * shared, int * dirty, int * total) -{ - while (address < end) { - statm_pmd_range(pgd, address, end - address, pages, shared, dirty, total); - address = (address + PGDIR_SIZE) & PGDIR_MASK; - pgd++; - } -} - -static unsigned long -get_wchan (struct task_struct *p) -{ - if (!p || p == current || p->state == TASK_RUNNING) - return 0; -#if defined(__i386__) - { - unsigned long ebp, eip; - unsigned long stack_page; - int count = 0; - - stack_page = p->kernel_stack_page; - if (!stack_page) - return 0; - ebp = p->tss.ebp; - do { - if (ebp < stack_page || ebp >= 4092+stack_page) - return 0; - eip = *(unsigned long *) (ebp+4); - if (eip < (unsigned long) interruptible_sleep_on - || eip >= (unsigned long) add_timer) - return eip; - ebp = *(unsigned long *) ebp; - } while (count++ < 16); - } -#elif defined(__alpha__) - /* - * This one depends on the frame size of schedule(). Do a - * "disass schedule" in gdb to find the frame size. Also, the - * code assumes that sleep_on() follows immediately after - * interruptible_sleep_on() and that add_timer() follows - * immediately after interruptible_sleep(). Ugly, isn't it? - * Maybe adding a wchan field to task_struct would be better, - * after all... - */ - { - unsigned long schedule_frame; - unsigned long pc; - - pc = thread_saved_pc(&p->tss); - if (pc >= (unsigned long) interruptible_sleep_on && pc < (unsigned long) add_timer) { - schedule_frame = ((unsigned long *)p->tss.ksp)[6]; - return ((unsigned long *)schedule_frame)[12]; - } - return pc; - } -#endif - return 0; -} - -asmlinkage int -sys_table (int type, union table *buf, const void *param) -{ - union table tbl; - struct sysinfo i; - struct task_struct *tsk = NULL; - struct ip_chain *chain; - struct ip_fwkernel *rule; - char devname [9]; - int index, err; - pid_t pid; - - if (type == TABLE_VERSION) - return _TABLE_VERSION; - - if (!buf) - return -EFAULT; - - memset (&tbl, 0, sizeof (union table)); - - /* For TABLE_PROC_*, read pid and get task_struct */ - - switch (type) { - case TABLE_PROC_UID: - case TABLE_PROC_MEM: - case TABLE_PROC_SEGMENT: - case TABLE_PROC_TIME: - case TABLE_PROC_STATE: - case TABLE_PROC_SIGNAL: - case TABLE_PROC_KERNEL: - err = verify_area (VERIFY_READ, param, sizeof (pid_t)); - if (err) - return err; - memcpy_fromfs (&pid, param, sizeof (pid_t)); - - tsk = get_task (pid); - if (tsk == NULL) - return -ESRCH; - break; - case TABLE_NETACCT: - err = verify_area (VERIFY_READ, param, 5); - if (err) - return err; - copy_from_user (devname, param, 5); - devname [5] = 0; - - break; - } - - /* Main function dispatcher */ - - switch (type) { - case TABLE_PROCLIST: - tsk = task [0]; - for (index = 0; index < nr_tasks; index++) { - tbl.proclist.pids [index] = tsk->pid; - tsk = tsk->next_task; - } - tbl.proclist.nr_running = nr_running; - tbl.proclist.nr_tasks = nr_tasks; - tbl.proclist.last_pid = last_pid; - break; - case TABLE_CPU: - tbl.cpu.total = jiffies; - tbl.cpu.user = kstat.cpu_user; - tbl.cpu.nice = kstat.cpu_nice; - tbl.cpu.sys = kstat.cpu_system; - tbl.cpu.idle = tbl.cpu.total - - (tbl.cpu.user + tbl.cpu.nice + tbl.cpu.sys); - tbl.cpu.frequency = HZ; - break; - case TABLE_MEM: - si_meminfo (&i); - tbl.mem.total = i.totalram; - tbl.mem.used = i.totalram - i.freeram; - tbl.mem.free = i.freeram; - tbl.mem.shared = i.sharedram; - tbl.mem.buffer = i.bufferram; - tbl.mem.cached = page_cache_size << PAGE_SHIFT; - break; - case TABLE_SWAP: - si_swapinfo (&i); - tbl.swap.total = i.totalswap; - tbl.swap.used = i.totalswap - i.freeswap; - tbl.swap.free = i.freeswap; - tbl.swap.pagein = kstat.pswpin; - tbl.swap.pageout = kstat.pswpout; - break; - case TABLE_LOADAVG: - tbl.loadavg.loadavg [0] = (double) avenrun [0] / (1 << FSHIFT); - tbl.loadavg.loadavg [1] = (double) avenrun [1] / (1 << FSHIFT); - tbl.loadavg.loadavg [2] = (double) avenrun [2] / (1 << FSHIFT); - tbl.loadavg.nr_running = nr_running; - tbl.loadavg.nr_tasks = nr_tasks; - tbl.loadavg.last_pid = last_pid; - break; - case TABLE_UPTIME: - tbl.uptime.uptime = jiffies; - tbl.uptime.idle = task[0]->utime + task[0]->stime; - break; - case TABLE_PROC_STATE: - tbl.proc_state.state = tsk->state; - tbl.proc_state.flags = tsk->flags; - memcpy (tbl.proc_state.comm, tsk->comm, - sizeof (tbl.proc_state.comm)); - break; - case TABLE_PROC_UID: - tbl.proc_uid.uid = tsk->uid; - tbl.proc_uid.euid = tsk->euid; - tbl.proc_uid.suid = tsk->suid; - tbl.proc_uid.fsuid = tsk->fsuid; - - tbl.proc_uid.gid = tsk->gid; - tbl.proc_uid.egid = tsk->egid; - tbl.proc_uid.sgid = tsk->sgid; - tbl.proc_uid.fsgid = tsk->fsgid; - - tbl.proc_uid.pid = tsk->pid; - tbl.proc_uid.pgrp = tsk->pgrp; - tbl.proc_uid.ppid = tsk->p_pptr->pid; - - tbl.proc_uid.session = tsk->session; - tbl.proc_uid.tty = tsk->tty ? - kdev_t_to_nr (tsk->tty->device) : 0; - tbl.proc_uid.tpgid = tsk->tty ? tsk->tty->pgrp : -1; - - tbl.proc_uid.priority = tsk->priority; - tbl.proc_uid.counter = tsk->counter; - tbl.proc_uid.def_priority = DEF_PRIORITY; - break; - case TABLE_PROC_SIGNAL: - tbl.proc_signal.signal = tsk->signal; - tbl.proc_signal.blocked = tsk->blocked; - - if (tsk->sig) { - struct sigaction * action = tsk->sig->action; - unsigned long sig_ign = 0, sig_caught = 0; - unsigned long bit = 1; - int i; - - for (i = 0; i < 32; i++) { - switch((unsigned long) action->sa_handler) { - case 0: - break; - case 1: - sig_ign |= bit; - break; - default: - sig_caught |= bit; - } - bit <<= 1; - action++; - } - - tbl.proc_signal.ignored = sig_ign; - tbl.proc_signal.caught = sig_caught; - } else { - tbl.proc_signal.ignored = 0; - tbl.proc_signal.caught = 0; - } - break; - case TABLE_PROC_MEM: - if (tsk->mm && tsk->mm != &init_mm) { - tbl.proc_mem.context = tsk->mm->context; - tbl.proc_mem.start_code = tsk->mm->start_code; - tbl.proc_mem.end_code = tsk->mm->end_code; - tbl.proc_mem.start_data = tsk->mm-> start_data; - tbl.proc_mem.end_data = tsk->mm->end_data; - tbl.proc_mem.start_brk = tsk->mm->start_brk; - tbl.proc_mem.brk = tsk->mm->brk; - tbl.proc_mem.start_stack = tsk->mm->start_stack; - tbl.proc_mem.start_mmap = tsk->mm->start_mmap; - tbl.proc_mem.arg_start = tsk->mm->arg_start; - tbl.proc_mem.arg_end = tsk->mm->arg_end; - tbl.proc_mem.env_start = tsk->mm->env_start; - tbl.proc_mem.env_end = tsk->mm->env_end; - tbl.proc_mem.rss = tsk->mm->rss; - tbl.proc_mem.total_vm = tsk->mm->total_vm; - tbl.proc_mem.locked_vm = tsk->mm->locked_vm; - } - tbl.proc_mem.rlim = tsk->rlim ? - tsk->rlim[RLIMIT_RSS].rlim_cur : 0; - break; - case TABLE_PROC_SEGMENT: - if (tsk->mm && tsk->mm != &init_mm) { - unsigned long vsize = 0; - int size = 0, resident = 0, share = 0; - int trs = 0, lrs = 0, drs = 0, dt = 0; - struct vm_area_struct * vma = tsk->mm->mmap; - - while (vma) { - pgd_t *pgd = pgd_offset(tsk->mm, vma->vm_start); - int pages = 0, shared = 0, dirty = 0, total = 0; - - vsize += vma->vm_end - vma->vm_start; - - statm_pgd_range (pgd, vma->vm_start, vma->vm_end, - &pages, &shared, &dirty, &total); - resident += pages; - share += shared; - dt += dirty; - size += total; - if (vma->vm_flags & VM_EXECUTABLE) - trs += pages; /* text */ - else if (vma->vm_flags & VM_GROWSDOWN) - drs += pages; /* stack */ - else if (vma->vm_end > 0x60000000) - lrs += pages; /* library */ - else - drs += pages; - vma = vma->vm_next; - } - - tbl.proc_segment.vsize = vsize; - tbl.proc_segment.size = size; - tbl.proc_segment.resident = resident; - tbl.proc_segment.shared = share; - tbl.proc_segment.trs = trs; - tbl.proc_segment.lrs = lrs; - tbl.proc_segment.dt = dt; - } - break; - case TABLE_PROC_TIME: - tbl.proc_time.utime = tsk->utime; - tbl.proc_time.stime = tsk->stime; - tbl.proc_time.cutime = tsk->cutime; - tbl.proc_time.cstime = tsk->cstime; - - tbl.proc_time.start_time = tsk->start_time; - tbl.proc_time.timeout = tsk->timeout; - tbl.proc_time.policy = tsk->policy; - tbl.proc_time.rt_priority = tsk->rt_priority; - - tbl.proc_time.it_real_value = tsk->it_real_value; - tbl.proc_time.it_prof_value = tsk->it_prof_value; - tbl.proc_time.it_virt_value = tsk->it_virt_value; - tbl.proc_time.it_real_incr = tsk->it_real_incr; - tbl.proc_time.it_prof_incr = tsk->it_prof_incr; - tbl.proc_time.it_virt_incr = tsk->it_virt_incr; - break; - case TABLE_PROC_KERNEL: - tbl.proc_kernel.min_flt = tsk->min_flt; - tbl.proc_kernel.cmin_flt = tsk->cmin_flt; - tbl.proc_kernel.maj_flt = tsk->maj_flt; - tbl.proc_kernel.cmaj_flt = tsk->cmaj_flt; - - tbl.proc_kernel.kesp = tsk->kernel_stack_page ? KSTK_EIP(tsk) : 0; - tbl.proc_kernel.keip = tsk->kernel_stack_page ? KSTK_ESP(tsk) : 0; - - tbl.proc_kernel.nswap = tsk->nswap; - tbl.proc_kernel.cnswap = tsk->cnswap; - - tbl.proc_kernel.wchan = get_wchan (tsk); - break; - case TABLE_NETACCT: - for (chain = ip_fw_chains; chain; chain = chain->next) { - for (rule = chain->chain; rule; rule = rule->next) { - const char *name = rule->ipfw.fw_vianame; - int k; - - if (name [0] && !strncmp (param, name, 5)) - continue; - - for (k = 0; k < NUM_SLOTS; k++) { - tbl.netacct.packets += - rule->counters[k].pcnt; - tbl.netacct.bytes += - rule->counters[k].bcnt; - } - } - } - break; - default: - return -EINVAL; - } - - err = verify_area (VERIFY_WRITE, buf, sizeof (struct table)); - if (err) - return err; - - memcpy_tofs (buf, &tbl, sizeof (union table)); - return 0; -} diff --git a/kernel/table20/unistd-i386.h b/kernel/table20/unistd-i386.h deleted file mode 100644 index 0d5b4f8b..00000000 --- a/kernel/table20/unistd-i386.h +++ /dev/null @@ -1,324 +0,0 @@ -#ifndef _ASM_I386_UNISTD_H_ -#define _ASM_I386_UNISTD_H_ - -/* - * This file contains the system call numbers. - */ - -#define __NR_setup 0 /* used only by init, to get system going */ -#define __NR_exit 1 -#define __NR_fork 2 -#define __NR_read 3 -#define __NR_write 4 -#define __NR_open 5 -#define __NR_close 6 -#define __NR_waitpid 7 -#define __NR_creat 8 -#define __NR_link 9 -#define __NR_unlink 10 -#define __NR_execve 11 -#define __NR_chdir 12 -#define __NR_time 13 -#define __NR_mknod 14 -#define __NR_chmod 15 -#define __NR_chown 16 -#define __NR_break 17 -#define __NR_oldstat 18 -#define __NR_lseek 19 -#define __NR_getpid 20 -#define __NR_mount 21 -#define __NR_umount 22 -#define __NR_setuid 23 -#define __NR_getuid 24 -#define __NR_stime 25 -#define __NR_ptrace 26 -#define __NR_alarm 27 -#define __NR_oldfstat 28 -#define __NR_pause 29 -#define __NR_utime 30 -#define __NR_stty 31 -#define __NR_gtty 32 -#define __NR_access 33 -#define __NR_nice 34 -#define __NR_ftime 35 -#define __NR_sync 36 -#define __NR_kill 37 -#define __NR_rename 38 -#define __NR_mkdir 39 -#define __NR_rmdir 40 -#define __NR_dup 41 -#define __NR_pipe 42 -#define __NR_times 43 -#define __NR_prof 44 -#define __NR_brk 45 -#define __NR_setgid 46 -#define __NR_getgid 47 -#define __NR_signal 48 -#define __NR_geteuid 49 -#define __NR_getegid 50 -#define __NR_acct 51 -#define __NR_phys 52 -#define __NR_lock 53 -#define __NR_ioctl 54 -#define __NR_fcntl 55 -#define __NR_mpx 56 -#define __NR_setpgid 57 -#define __NR_ulimit 58 -#define __NR_oldolduname 59 -#define __NR_umask 60 -#define __NR_chroot 61 -#define __NR_ustat 62 -#define __NR_dup2 63 -#define __NR_getppid 64 -#define __NR_getpgrp 65 -#define __NR_setsid 66 -#define __NR_sigaction 67 -#define __NR_sgetmask 68 -#define __NR_ssetmask 69 -#define __NR_setreuid 70 -#define __NR_setregid 71 -#define __NR_sigsuspend 72 -#define __NR_sigpending 73 -#define __NR_sethostname 74 -#define __NR_setrlimit 75 -#define __NR_getrlimit 76 -#define __NR_getrusage 77 -#define __NR_gettimeofday 78 -#define __NR_settimeofday 79 -#define __NR_getgroups 80 -#define __NR_setgroups 81 -#define __NR_select 82 -#define __NR_symlink 83 -#define __NR_oldlstat 84 -#define __NR_readlink 85 -#define __NR_uselib 86 -#define __NR_swapon 87 -#define __NR_reboot 88 -#define __NR_readdir 89 -#define __NR_mmap 90 -#define __NR_munmap 91 -#define __NR_truncate 92 -#define __NR_ftruncate 93 -#define __NR_fchmod 94 -#define __NR_fchown 95 -#define __NR_getpriority 96 -#define __NR_setpriority 97 -#define __NR_profil 98 -#define __NR_statfs 99 -#define __NR_fstatfs 100 -#define __NR_ioperm 101 -#define __NR_socketcall 102 -#define __NR_syslog 103 -#define __NR_setitimer 104 -#define __NR_getitimer 105 -#define __NR_stat 106 -#define __NR_lstat 107 -#define __NR_fstat 108 -#define __NR_olduname 109 -#define __NR_iopl 110 -#define __NR_vhangup 111 -#define __NR_idle 112 -#define __NR_vm86 113 -#define __NR_wait4 114 -#define __NR_swapoff 115 -#define __NR_sysinfo 116 -#define __NR_ipc 117 -#define __NR_fsync 118 -#define __NR_sigreturn 119 -#define __NR_clone 120 -#define __NR_setdomainname 121 -#define __NR_uname 122 -#define __NR_modify_ldt 123 -#define __NR_adjtimex 124 -#define __NR_mprotect 125 -#define __NR_sigprocmask 126 -#define __NR_create_module 127 -#define __NR_init_module 128 -#define __NR_delete_module 129 -#define __NR_get_kernel_syms 130 -#define __NR_quotactl 131 -#define __NR_getpgid 132 -#define __NR_fchdir 133 -#define __NR_bdflush 134 -#define __NR_sysfs 135 -#define __NR_personality 136 -#define __NR_afs_syscall 137 /* Syscall for Andrew File System */ -#define __NR_setfsuid 138 -#define __NR_setfsgid 139 -#define __NR__llseek 140 -#define __NR_getdents 141 -#define __NR__newselect 142 -#define __NR_flock 143 -#define __NR_msync 144 -#define __NR_readv 145 -#define __NR_writev 146 -#define __NR_getsid 147 -#define __NR_fdatasync 148 -#define __NR__sysctl 149 -#define __NR_mlock 150 -#define __NR_munlock 151 -#define __NR_mlockall 152 -#define __NR_munlockall 153 -#define __NR_sched_setparam 154 -#define __NR_sched_getparam 155 -#define __NR_sched_setscheduler 156 -#define __NR_sched_getscheduler 157 -#define __NR_sched_yield 158 -#define __NR_sched_get_priority_max 159 -#define __NR_sched_get_priority_min 160 -#define __NR_sched_rr_get_interval 161 -#define __NR_nanosleep 162 -#define __NR_mremap 163 -#define __NR_table 188 - -/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */ -#define _syscall0(type,name) \ -type name(void) \ -{ \ -long __res; \ -__asm__ volatile ("int $0x80" \ - : "=a" (__res) \ - : "0" (__NR_##name)); \ -if (__res >= 0) \ - return (type) __res; \ -errno = -__res; \ -return -1; \ -} - -#define _syscall1(type,name,type1,arg1) \ -type name(type1 arg1) \ -{ \ -long __res; \ -__asm__ volatile ("int $0x80" \ - : "=a" (__res) \ - : "0" (__NR_##name),"b" ((long)(arg1))); \ -if (__res >= 0) \ - return (type) __res; \ -errno = -__res; \ -return -1; \ -} - -#define _syscall2(type,name,type1,arg1,type2,arg2) \ -type name(type1 arg1,type2 arg2) \ -{ \ -long __res; \ -__asm__ volatile ("int $0x80" \ - : "=a" (__res) \ - : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \ -if (__res >= 0) \ - return (type) __res; \ -errno = -__res; \ -return -1; \ -} - -#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ -type name(type1 arg1,type2 arg2,type3 arg3) \ -{ \ -long __res; \ -__asm__ volatile ("int $0x80" \ - : "=a" (__res) \ - : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ - "d" ((long)(arg3))); \ -if (__res>=0) \ - return (type) __res; \ -errno=-__res; \ -return -1; \ -} - -#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ -type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ -{ \ -long __res; \ -__asm__ volatile ("int $0x80" \ - : "=a" (__res) \ - : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ - "d" ((long)(arg3)),"S" ((long)(arg4))); \ -if (__res>=0) \ - return (type) __res; \ -errno=-__res; \ -return -1; \ -} - -#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ -{ \ -long __res; \ -__asm__ volatile ("int $0x80" \ - : "=a" (__res) \ - : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ - "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5))); \ -if (__res>=0) \ - return (type) __res; \ -errno=-__res; \ -return -1; \ -} - -#ifdef __KERNEL_SYSCALLS__ - -/* - * we need this inline - forking from kernel space will result - * in NO COPY ON WRITE (!!!), until an execve is executed. This - * is no problem, but for the stack. This is handled by not letting - * main() use the stack at all after fork(). Thus, no function - * calls - which means inline code for fork too, as otherwise we - * would use the stack upon exit from 'fork()'. - * - * Actually only pause and fork are needed inline, so that there - * won't be any messing with the stack from main(), but we define - * some others too. - */ -#define __NR__exit __NR_exit -static inline _syscall0(int,idle) -static inline _syscall0(int,fork) -static inline _syscall2(int,clone,unsigned long,flags,char *,esp) -static inline _syscall0(int,pause) -static inline _syscall0(int,setup) -static inline _syscall0(int,sync) -static inline _syscall0(pid_t,setsid) -static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count) -static inline _syscall1(int,dup,int,fd) -static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) -static inline _syscall3(int,open,const char *,file,int,flag,int,mode) -static inline _syscall1(int,close,int,fd) -static inline _syscall1(int,_exit,int,exitcode) -static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) - -static inline pid_t wait(int * wait_stat) -{ - return waitpid(-1,wait_stat,0); -} - -/* - * This is the mechanism for creating a new kernel thread. - * - * NOTE! Only a kernel-only process(ie the swapper or direct descendants - * who haven't done an "execve()") should use this: it will work within - * a system call from a "real" process, but the process memory space will - * not be free'd until both the parent and the child have exited. - */ -static inline pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) -{ - long retval; - - __asm__ __volatile__( - "movl %%esp,%%esi\n\t" - "int $0x80\n\t" /* Linux/i386 system call */ - "cmpl %%esp,%%esi\n\t" /* child or parent? */ - "je 1f\n\t" /* parent - jump */ - "pushl %3\n\t" /* push argument */ - "call *%4\n\t" /* call fn */ - "movl %2,%0\n\t" /* exit */ - "int $0x80\n" - "1:\t" - :"=a" (retval) - :"0" (__NR_clone), "i" (__NR_exit), - "r" (arg), "r" (fn), - "b" (flags | CLONE_VM) - :"si"); - return retval; -} - -#endif - -#endif /* _ASM_I386_UNISTD_H_ */ diff --git a/kernel/table20/version.h b/kernel/table20/version.h deleted file mode 100644 index d47411ee..00000000 --- a/kernel/table20/version.h +++ /dev/null @@ -1 +0,0 @@ -#define _TABLE_VERSION 1 diff --git a/kernel/table21/.cvsignore b/kernel/table21/.cvsignore deleted file mode 100644 index a7ab2843..00000000 --- a/kernel/table21/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -kernel.patch -.main.o.flags -.table.o.flags -.module.o.flags diff --git a/kernel/table21/Makefile b/kernel/table21/Makefile deleted file mode 100644 index 2eedd527..00000000 --- a/kernel/table21/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Makefile for the linux system information tables. -# -# Note! Dependencies are done automagically by 'make dep', which also -# removes any old dependencies. DON'T put your own dependencies here -# unless it's something special (ie not a .c file). -# -# Note 2! The CFLAGS definition is now in the main makefile... - -O_TARGET := table.o -OX_OBJS := main.o - -M_TARGET := table_mod.o -MX_OBJS := module.o - -include $(TOPDIR)/Rules.make diff --git a/kernel/table21/README b/kernel/table21/README deleted file mode 100644 index 88d26bec..00000000 --- a/kernel/table21/README +++ /dev/null @@ -1,21 +0,0 @@ -This is a new system call `table ()' for the Linux table. It is faster -than reading from /proc and can be used to fetch all information required -for libgtop until whe have some other function (extended sysctl, ...) in -standard kernels. - -I didn't want to change sysctl or some other function myself cause this may -cause other applications relying upon those function to fail. This is -something for the ``real'' kernel gurus ... - -To use this new system call for libgtop, do the following: - -* Copy this directory to /usr/src/linux/table -* Make /usr/src/linux/include/linux/table.h symlink to /usr/src/linux/table/table.h -* Apply the patch `kernel.patch' to the kernel, compile, install and reboot -* Recompile libgtop (remove `config.cache' and run the `autogen.sh' again). - -If you want to change and/or add something - feel free to do so ! - -Have fun, - -Martin diff --git a/kernel/table21/entry-i386.S b/kernel/table21/entry-i386.S deleted file mode 100644 index fb734fbc..00000000 --- a/kernel/table21/entry-i386.S +++ /dev/null @@ -1,571 +0,0 @@ -/* - * linux/arch/i386/entry.S - * - * Copyright (C) 1991, 1992 Linus Torvalds - */ - -/* - * entry.S contains the system-call and fault low-level handling routines. - * This also contains the timer-interrupt handler, as well as all interrupts - * and faults that can result in a task-switch. - * - * NOTE: This code handles signal-recognition, which happens every time - * after a timer-interrupt and after each system call. - * - * I changed all the .align's to 4 (16 byte alignment), as that's faster - * on a 486. - * - * Stack layout in 'ret_from_system_call': - * ptrace needs to have all regs on the stack. - * if the order here is changed, it needs to be - * updated in fork.c:copy_process, signal.c:do_signal, - * ptrace.c and ptrace.h - * - * 0(%esp) - %ebx - * 4(%esp) - %ecx - * 8(%esp) - %edx - * C(%esp) - %esi - * 10(%esp) - %edi - * 14(%esp) - %ebp - * 18(%esp) - %eax - * 1C(%esp) - %ds - * 20(%esp) - %es - * 24(%esp) - orig_eax - * 28(%esp) - %eip - * 2C(%esp) - %cs - * 30(%esp) - %eflags - * 34(%esp) - %oldesp - * 38(%esp) - %oldss - * - * "current" is in register %ebx during any slow entries. - */ - -#include -#include -#include -#define ASSEMBLY -#include - -EBX = 0x00 -ECX = 0x04 -EDX = 0x08 -ESI = 0x0C -EDI = 0x10 -EBP = 0x14 -EAX = 0x18 -DS = 0x1C -ES = 0x20 -ORIG_EAX = 0x24 -EIP = 0x28 -CS = 0x2C -EFLAGS = 0x30 -OLDESP = 0x34 -OLDSS = 0x38 - -CF_MASK = 0x00000001 -IF_MASK = 0x00000200 -NT_MASK = 0x00004000 -VM_MASK = 0x00020000 - -/* - * these are offsets into the task-struct. - */ -state = 0 -flags = 4 -sigpending = 8 -addr_limit = 12 -exec_domain = 16 -need_resched = 20 - -ENOSYS = 38 - - -#define SAVE_ALL \ - cld; \ - pushl %es; \ - pushl %ds; \ - pushl %eax; \ - pushl %ebp; \ - pushl %edi; \ - pushl %esi; \ - pushl %edx; \ - pushl %ecx; \ - pushl %ebx; \ - movl $(__KERNEL_DS),%edx; \ - movl %dx,%ds; \ - movl %dx,%es; - -#define RESTORE_ALL \ - popl %ebx; \ - popl %ecx; \ - popl %edx; \ - popl %esi; \ - popl %edi; \ - popl %ebp; \ - popl %eax; \ -1: popl %ds; \ -2: popl %es; \ -3: addl $4,%esp; \ - iret; \ -.section fixup,"ax"; \ -4: pushl $0; \ - popl %ds; \ - jmp 2b; \ -5: pushl $0; \ - popl %es; \ - jmp 3b; \ -.previous; \ -.section __ex_table,"a";\ - .align 4; \ - .long 1b,4b; \ - .long 2b,5b; \ -.previous - -#define GET_CURRENT(reg) \ - movl %esp, reg; \ - andl $-8192, reg; - -ENTRY(lcall7) - pushfl # We get a different stack layout with call gates, - pushl %eax # which has to be cleaned up later.. - SAVE_ALL - movl EIP(%esp),%eax # due to call gates, this is eflags, not eip.. - movl CS(%esp),%edx # this is eip.. - movl EFLAGS(%esp),%ecx # and this is cs.. - movl %eax,EFLAGS(%esp) # - movl %edx,EIP(%esp) # Now we move them to their "normal" places - movl %ecx,CS(%esp) # - movl %esp,%ebx - pushl %ebx - andl $-8192,%ebx # GET_CURRENT - movl exec_domain(%ebx),%edx # Get the execution domain - movl 4(%edx),%edx # Get the lcall7 handler for the domain - call *%edx - popl %eax - jmp ret_from_sys_call - - -#ifdef __SMP__ - ALIGN - .globl ret_from_smpfork -ret_from_smpfork: - GET_CURRENT(%ebx) - btrl $0, SYMBOL_NAME(scheduler_lock) - jmp ret_from_sys_call -#endif /* __SMP__ */ - -/* - * Return to user mode is not as complex as all this looks, - * but we want the default path for a system call return to - * go as quickly as possible which is why some of this is - * less clear than it otherwise should be. - */ - -ENTRY(system_call) - pushl %eax # save orig_eax - SAVE_ALL - GET_CURRENT(%ebx) - cmpl $(NR_syscalls),%eax - jae badsys - testb $0x20,flags(%ebx) # PF_TRACESYS - jne tracesys - call *SYMBOL_NAME(sys_call_table)(,%eax,4) - movl %eax,EAX(%esp) # save the return value - ALIGN - .globl ret_from_sys_call - .globl ret_from_intr -ret_from_sys_call: - movl SYMBOL_NAME(bh_mask),%eax - andl SYMBOL_NAME(bh_active),%eax - jne handle_bottom_half -ret_with_reschedule: - cmpl $0,need_resched(%ebx) - jne reschedule - cmpl $0,sigpending(%ebx) - jne signal_return - RESTORE_ALL - ALIGN -signal_return: - testl $(VM_MASK),EFLAGS(%esp) - pushl %esp - jne v86_signal_return - pushl $0 - call SYMBOL_NAME(do_signal) - addl $8,%esp - RESTORE_ALL - ALIGN -v86_signal_return: - call SYMBOL_NAME(save_v86_state) - movl %eax,%esp - pushl %eax - pushl $0 - call SYMBOL_NAME(do_signal) - addl $8,%esp - RESTORE_ALL - ALIGN -tracesys: - movl $-ENOSYS,EAX(%esp) - call SYMBOL_NAME(syscall_trace) - movl ORIG_EAX(%esp),%eax - call *SYMBOL_NAME(sys_call_table)(,%eax,4) - movl %eax,EAX(%esp) # save the return value - call SYMBOL_NAME(syscall_trace) - jmp ret_from_sys_call -badsys: - movl $-ENOSYS,EAX(%esp) - jmp ret_from_sys_call - - ALIGN -ret_from_exception: - movl SYMBOL_NAME(bh_mask),%eax - andl SYMBOL_NAME(bh_active),%eax - jne handle_bottom_half - ALIGN -ret_from_intr: - GET_CURRENT(%ebx) - movl EFLAGS(%esp),%eax # mix EFLAGS and CS - movb CS(%esp),%al - testl $(VM_MASK | 3),%eax # return to VM86 mode or non-supervisor? - jne ret_with_reschedule - RESTORE_ALL - - ALIGN -handle_bottom_half: - pushl $ret_from_intr - jmp SYMBOL_NAME(do_bottom_half) - - ALIGN -reschedule: - pushl $ret_from_sys_call - jmp SYMBOL_NAME(schedule) # test - - -ENTRY(divide_error) - pushl $0 # no error code - pushl $ SYMBOL_NAME(do_divide_error) - ALIGN -error_code: - pushl %ds - pushl %eax - xorl %eax,%eax - pushl %ebp - pushl %edi - pushl %esi - pushl %edx - decl %eax # eax = -1 - pushl %ecx - pushl %ebx -#if 1 - xorl %ecx,%ecx # zero ecx - cld - mov %es,%cx # get the lower order bits of es -#else - cld -# Some older processors leave the top 16 bits of the 32 bit destination -# register undefined, rather than zeroed in the following instruction. -# This won't matter when restoring or loading a segment register from the -# stack. It may be a problem if any code reads the full 32 bit value. -# dosemu? kernel? Would somebody like to verify that this way is really OK? - movl %es,%cx -#endif - xchgl %eax, ORIG_EAX(%esp) # orig_eax (get the error code. ) - movl %esp,%edx - xchgl %ecx, ES(%esp) # get the address and save es. - pushl %eax # push the error code - pushl %edx - movl $(__KERNEL_DS),%edx - movl %dx,%ds - movl %dx,%es - GET_CURRENT(%ebx) - call *%ecx - addl $8,%esp - jmp ret_from_exception - -ENTRY(coprocessor_error) - pushl $0 - pushl $ SYMBOL_NAME(do_coprocessor_error) - jmp error_code - -ENTRY(device_not_available) - pushl $-1 # mark this as an int - SAVE_ALL - GET_CURRENT(%ebx) - pushl $ret_from_exception - movl %cr0,%eax - testl $0x4,%eax # EM (math emulation bit) - je SYMBOL_NAME(math_state_restore) - pushl $0 # temporary storage for ORIG_EIP - call SYMBOL_NAME(math_emulate) - addl $4,%esp - ret - -ENTRY(debug) - pushl $0 - pushl $ SYMBOL_NAME(do_debug) - jmp error_code - -ENTRY(nmi) - pushl $0 - pushl $ SYMBOL_NAME(do_nmi) - jmp error_code - -ENTRY(int3) - pushl $0 - pushl $ SYMBOL_NAME(do_int3) - jmp error_code - -ENTRY(overflow) - pushl $0 - pushl $ SYMBOL_NAME(do_overflow) - jmp error_code - -ENTRY(bounds) - pushl $0 - pushl $ SYMBOL_NAME(do_bounds) - jmp error_code - -ENTRY(invalid_op) - pushl $0 - pushl $ SYMBOL_NAME(do_invalid_op) - jmp error_code - -ENTRY(coprocessor_segment_overrun) - pushl $0 - pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun) - jmp error_code - -ENTRY(reserved) - pushl $0 - pushl $ SYMBOL_NAME(do_reserved) - jmp error_code - -ENTRY(double_fault) - pushl $ SYMBOL_NAME(do_double_fault) - jmp error_code - -ENTRY(invalid_TSS) - pushl $ SYMBOL_NAME(do_invalid_TSS) - jmp error_code - -ENTRY(segment_not_present) - pushl $ SYMBOL_NAME(do_segment_not_present) - jmp error_code - -ENTRY(stack_segment) - pushl $ SYMBOL_NAME(do_stack_segment) - jmp error_code - -ENTRY(general_protection) - pushl $ SYMBOL_NAME(do_general_protection) - jmp error_code - -ENTRY(alignment_check) - pushl $ SYMBOL_NAME(do_alignment_check) - jmp error_code - -ENTRY(page_fault) - pushl $ SYMBOL_NAME(do_page_fault) - jmp error_code - -ENTRY(spurious_interrupt_bug) - pushl $0 - pushl $ SYMBOL_NAME(do_spurious_interrupt_bug) - jmp error_code - -.data -ENTRY(sys_call_table) - .long SYMBOL_NAME(sys_setup) /* 0 */ - .long SYMBOL_NAME(sys_exit) - .long SYMBOL_NAME(sys_fork) - .long SYMBOL_NAME(sys_read) - .long SYMBOL_NAME(sys_write) - .long SYMBOL_NAME(sys_open) /* 5 */ - .long SYMBOL_NAME(sys_close) - .long SYMBOL_NAME(sys_waitpid) - .long SYMBOL_NAME(sys_creat) - .long SYMBOL_NAME(sys_link) - .long SYMBOL_NAME(sys_unlink) /* 10 */ - .long SYMBOL_NAME(sys_execve) - .long SYMBOL_NAME(sys_chdir) - .long SYMBOL_NAME(sys_time) - .long SYMBOL_NAME(sys_mknod) - .long SYMBOL_NAME(sys_chmod) /* 15 */ - .long SYMBOL_NAME(sys_lchown) - .long SYMBOL_NAME(sys_ni_syscall) /* old break syscall holder */ - .long SYMBOL_NAME(sys_stat) - .long SYMBOL_NAME(sys_lseek) - .long SYMBOL_NAME(sys_getpid) /* 20 */ - .long SYMBOL_NAME(sys_mount) - .long SYMBOL_NAME(sys_umount) - .long SYMBOL_NAME(sys_setuid) - .long SYMBOL_NAME(sys_getuid) - .long SYMBOL_NAME(sys_stime) /* 25 */ - .long SYMBOL_NAME(sys_ptrace) - .long SYMBOL_NAME(sys_alarm) - .long SYMBOL_NAME(sys_fstat) - .long SYMBOL_NAME(sys_pause) - .long SYMBOL_NAME(sys_utime) /* 30 */ - .long SYMBOL_NAME(sys_ni_syscall) /* old stty syscall holder */ - .long SYMBOL_NAME(sys_ni_syscall) /* old gtty syscall holder */ - .long SYMBOL_NAME(sys_access) - .long SYMBOL_NAME(sys_nice) - .long SYMBOL_NAME(sys_ni_syscall) /* 35 */ /* old ftime syscall holder */ - .long SYMBOL_NAME(sys_sync) - .long SYMBOL_NAME(sys_kill) - .long SYMBOL_NAME(sys_rename) - .long SYMBOL_NAME(sys_mkdir) - .long SYMBOL_NAME(sys_rmdir) /* 40 */ - .long SYMBOL_NAME(sys_dup) - .long SYMBOL_NAME(sys_pipe) - .long SYMBOL_NAME(sys_times) - .long SYMBOL_NAME(sys_ni_syscall) /* old prof syscall holder */ - .long SYMBOL_NAME(sys_brk) /* 45 */ - .long SYMBOL_NAME(sys_setgid) - .long SYMBOL_NAME(sys_getgid) - .long SYMBOL_NAME(sys_signal) - .long SYMBOL_NAME(sys_geteuid) - .long SYMBOL_NAME(sys_getegid) /* 50 */ - .long SYMBOL_NAME(sys_acct) - .long SYMBOL_NAME(sys_ni_syscall) /* old phys syscall holder */ - .long SYMBOL_NAME(sys_ni_syscall) /* old lock syscall holder */ - .long SYMBOL_NAME(sys_ioctl) - .long SYMBOL_NAME(sys_fcntl) /* 55 */ - .long SYMBOL_NAME(sys_ni_syscall) /* old mpx syscall holder */ - .long SYMBOL_NAME(sys_setpgid) - .long SYMBOL_NAME(sys_ni_syscall) /* old ulimit syscall holder */ - .long SYMBOL_NAME(sys_olduname) - .long SYMBOL_NAME(sys_umask) /* 60 */ - .long SYMBOL_NAME(sys_chroot) - .long SYMBOL_NAME(sys_ustat) - .long SYMBOL_NAME(sys_dup2) - .long SYMBOL_NAME(sys_getppid) - .long SYMBOL_NAME(sys_getpgrp) /* 65 */ - .long SYMBOL_NAME(sys_setsid) - .long SYMBOL_NAME(sys_sigaction) - .long SYMBOL_NAME(sys_sgetmask) - .long SYMBOL_NAME(sys_ssetmask) - .long SYMBOL_NAME(sys_setreuid) /* 70 */ - .long SYMBOL_NAME(sys_setregid) - .long SYMBOL_NAME(sys_sigsuspend) - .long SYMBOL_NAME(sys_sigpending) - .long SYMBOL_NAME(sys_sethostname) - .long SYMBOL_NAME(sys_setrlimit) /* 75 */ - .long SYMBOL_NAME(sys_getrlimit) - .long SYMBOL_NAME(sys_getrusage) - .long SYMBOL_NAME(sys_gettimeofday) - .long SYMBOL_NAME(sys_settimeofday) - .long SYMBOL_NAME(sys_getgroups) /* 80 */ - .long SYMBOL_NAME(sys_setgroups) - .long SYMBOL_NAME(old_select) - .long SYMBOL_NAME(sys_symlink) - .long SYMBOL_NAME(sys_lstat) - .long SYMBOL_NAME(sys_readlink) /* 85 */ - .long SYMBOL_NAME(sys_uselib) - .long SYMBOL_NAME(sys_swapon) - .long SYMBOL_NAME(sys_reboot) - .long SYMBOL_NAME(old_readdir) - .long SYMBOL_NAME(old_mmap) /* 90 */ - .long SYMBOL_NAME(sys_munmap) - .long SYMBOL_NAME(sys_truncate) - .long SYMBOL_NAME(sys_ftruncate) - .long SYMBOL_NAME(sys_fchmod) - .long SYMBOL_NAME(sys_fchown) /* 95 */ - .long SYMBOL_NAME(sys_getpriority) - .long SYMBOL_NAME(sys_setpriority) - .long SYMBOL_NAME(sys_ni_syscall) /* old profil syscall holder */ - .long SYMBOL_NAME(sys_statfs) - .long SYMBOL_NAME(sys_fstatfs) /* 100 */ - .long SYMBOL_NAME(sys_ioperm) - .long SYMBOL_NAME(sys_socketcall) - .long SYMBOL_NAME(sys_syslog) - .long SYMBOL_NAME(sys_setitimer) - .long SYMBOL_NAME(sys_getitimer) /* 105 */ - .long SYMBOL_NAME(sys_newstat) - .long SYMBOL_NAME(sys_newlstat) - .long SYMBOL_NAME(sys_newfstat) - .long SYMBOL_NAME(sys_uname) - .long SYMBOL_NAME(sys_iopl) /* 110 */ - .long SYMBOL_NAME(sys_vhangup) - .long SYMBOL_NAME(sys_idle) - .long SYMBOL_NAME(sys_vm86old) - .long SYMBOL_NAME(sys_wait4) - .long SYMBOL_NAME(sys_swapoff) /* 115 */ - .long SYMBOL_NAME(sys_sysinfo) - .long SYMBOL_NAME(sys_ipc) - .long SYMBOL_NAME(sys_fsync) - .long SYMBOL_NAME(sys_sigreturn) - .long SYMBOL_NAME(sys_clone) /* 120 */ - .long SYMBOL_NAME(sys_setdomainname) - .long SYMBOL_NAME(sys_newuname) - .long SYMBOL_NAME(sys_modify_ldt) - .long SYMBOL_NAME(sys_adjtimex) - .long SYMBOL_NAME(sys_mprotect) /* 125 */ - .long SYMBOL_NAME(sys_sigprocmask) - .long SYMBOL_NAME(sys_create_module) - .long SYMBOL_NAME(sys_init_module) - .long SYMBOL_NAME(sys_delete_module) - .long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */ - .long SYMBOL_NAME(sys_quotactl) - .long SYMBOL_NAME(sys_getpgid) - .long SYMBOL_NAME(sys_fchdir) - .long SYMBOL_NAME(sys_bdflush) - .long SYMBOL_NAME(sys_sysfs) /* 135 */ - .long SYMBOL_NAME(sys_personality) - .long SYMBOL_NAME(sys_ni_syscall) /* for afs_syscall */ - .long SYMBOL_NAME(sys_setfsuid) - .long SYMBOL_NAME(sys_setfsgid) - .long SYMBOL_NAME(sys_llseek) /* 140 */ - .long SYMBOL_NAME(sys_getdents) - .long SYMBOL_NAME(sys_select) - .long SYMBOL_NAME(sys_flock) - .long SYMBOL_NAME(sys_msync) - .long SYMBOL_NAME(sys_readv) /* 145 */ - .long SYMBOL_NAME(sys_writev) - .long SYMBOL_NAME(sys_getsid) - .long SYMBOL_NAME(sys_fdatasync) - .long SYMBOL_NAME(sys_sysctl) - .long SYMBOL_NAME(sys_mlock) /* 150 */ - .long SYMBOL_NAME(sys_munlock) - .long SYMBOL_NAME(sys_mlockall) - .long SYMBOL_NAME(sys_munlockall) - .long SYMBOL_NAME(sys_sched_setparam) - .long SYMBOL_NAME(sys_sched_getparam) /* 155 */ - .long SYMBOL_NAME(sys_sched_setscheduler) - .long SYMBOL_NAME(sys_sched_getscheduler) - .long SYMBOL_NAME(sys_sched_yield) - .long SYMBOL_NAME(sys_sched_get_priority_max) - .long SYMBOL_NAME(sys_sched_get_priority_min) /* 160 */ - .long SYMBOL_NAME(sys_sched_rr_get_interval) - .long SYMBOL_NAME(sys_nanosleep) - .long SYMBOL_NAME(sys_mremap) - .long SYMBOL_NAME(sys_setresuid) - .long SYMBOL_NAME(sys_getresuid) /* 165 */ - .long SYMBOL_NAME(sys_vm86) - .long SYMBOL_NAME(sys_query_module) - .long SYMBOL_NAME(sys_poll) - .long SYMBOL_NAME(sys_nfsservctl) - .long SYMBOL_NAME(sys_setresgid) /* 170 */ - .long SYMBOL_NAME(sys_getresgid) - .long SYMBOL_NAME(sys_prctl) - .long SYMBOL_NAME(sys_rt_sigreturn) - .long SYMBOL_NAME(sys_rt_sigaction) - .long SYMBOL_NAME(sys_rt_sigprocmask) /* 175 */ - .long SYMBOL_NAME(sys_rt_sigpending) - .long SYMBOL_NAME(sys_rt_sigtimedwait) - .long SYMBOL_NAME(sys_rt_sigqueueinfo) - .long SYMBOL_NAME(sys_rt_sigsuspend) - .long SYMBOL_NAME(sys_pread) /* 180 */ - .long SYMBOL_NAME(sys_pwrite) - .long SYMBOL_NAME(sys_chown) - .long SYMBOL_NAME(sys_getcwd) - .long SYMBOL_NAME(sys_capget) - .long SYMBOL_NAME(sys_capset) /* 185 */ - .long SYMBOL_NAME(sys_sigaltstack) - .long SYMBOL_NAME(sys_sendfile) - .long SYMBOL_NAME(sys_ni_syscall) /* streams1 */ - .long SYMBOL_NAME(sys_ni_syscall) /* streams2 */ - .long SYMBOL_NAME(sys_table) /* 190 */ - - .rept NR_syscalls-190 - .long SYMBOL_NAME(sys_ni_syscall) - .endr diff --git a/kernel/table21/main.c b/kernel/table21/main.c deleted file mode 100644 index e6d1882b..00000000 --- a/kernel/table21/main.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * linux/table/table_impl.c - * Copyright (C) 1998 Martin Baulig - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include "version.h" - -extern void scheduling_functions_start_here(void); -extern void scheduling_functions_end_here(void); - -int (*table_function_ptr) (int, union table *, const void *) = 0; - -EXPORT_SYMBOL(table_function_ptr); - -EXPORT_SYMBOL(nr_running); -EXPORT_SYMBOL(pidhash); -EXPORT_SYMBOL(task); -EXPORT_SYMBOL(si_swapinfo); -EXPORT_SYMBOL(scheduling_functions_start_here); -EXPORT_SYMBOL(scheduling_functions_end_here); -EXPORT_SYMBOL(avenrun); -EXPORT_SYMBOL(nr_tasks); -EXPORT_SYMBOL(last_pid); -EXPORT_SYMBOL(page_cache_size); -EXPORT_SYMBOL(init_mm); - -asmlinkage int -sys_table (int type, union table *buf, const void *param) -{ - if (table_function_ptr == 0) - return -ENOSYS; - - return (*table_function_ptr) (type, buf, param); -} diff --git a/kernel/table21/module.c b/kernel/table21/module.c deleted file mode 100644 index 1c1fa9c2..00000000 --- a/kernel/table21/module.c +++ /dev/null @@ -1,607 +0,0 @@ -/* - * linux/table/table_impl.c - * Copyright (C) 1998 Martin Baulig - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include "version.h" - -extern int (*table_function_ptr) (int, union table *, const void *); - -int table_fkt (int, union table *, const void *); - -EXPORT_NO_SYMBOLS; - -int -init_module(void) -{ - printk ("init_module () = %p - %d, %d\n", - table_fkt, sizeof (union table), sizeof (sigset_t)); - table_function_ptr = table_fkt; - return 0; -} - -void -cleanup_module(void) -{ - table_function_ptr = 0; -} - -#define LOAD_INT(x) ((x) >> FSHIFT) -#define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1-1)) * 100) - -#ifdef CONFIG_DEBUG_MALLOC -int get_malloc(char * buffer); -#endif - -static void collect_sigign_sigcatch(struct task_struct *p, sigset_t *ign, - sigset_t *catch) -{ - struct k_sigaction *k; - int i; - - sigemptyset(ign); - sigemptyset(catch); - -#if 0 - printk ("collect_sigign_sigcatch: %p - %p\n", - p, p->sig); -#endif - - if (p->sig) { - k = p->sig->action; - for (i = 1; i <= _NSIG; ++i, ++k) { -#if 0 - printk ("signal: %d - %p (%p, %p)\n", - i, k->sa.sa_handler, SIG_IGN, SIG_DFL); -#endif - if (k->sa.sa_handler == SIG_IGN) - sigaddset(ign, i); - else if (k->sa.sa_handler != SIG_DFL) - sigaddset(catch, i); - } - } -} - -/* - * These bracket the sleeping functions.. - */ -extern void scheduling_functions_start_here(void); -extern void scheduling_functions_end_here(void); -#define first_sched ((unsigned long) scheduling_functions_start_here) -#define last_sched ((unsigned long) scheduling_functions_end_here) - -static unsigned long get_wchan(struct task_struct *p) -{ - if (!p || p == current || p->state == TASK_RUNNING) - return 0; -#if defined(__i386__) - { - unsigned long ebp, eip; - unsigned long stack_page; - int count = 0; - - stack_page = 4096 + (unsigned long)p; - if (!stack_page) - return 0; - ebp = p->tss.ebp; - do { - if (ebp < stack_page || ebp >= 4092+stack_page) - return 0; - eip = *(unsigned long *) (ebp+4); - if (eip < first_sched || eip >= last_sched) - return eip; - ebp = *(unsigned long *) ebp; - } while (count++ < 16); - } -#elif defined(__alpha__) - /* - * This one depends on the frame size of schedule(). Do a - * "disass schedule" in gdb to find the frame size. Also, the - * code assumes that sleep_on() follows immediately after - * interruptible_sleep_on() and that add_timer() follows - * immediately after interruptible_sleep(). Ugly, isn't it? - * Maybe adding a wchan field to task_struct would be better, - * after all... - */ - { - unsigned long schedule_frame; - unsigned long pc; - - pc = thread_saved_pc(&p->tss); - if (pc >= first_sched && pc < last_sched) { - schedule_frame = ((unsigned long *)p->tss.ksp)[6]; - return ((unsigned long *)schedule_frame)[12]; - } - return pc; - } -#elif defined(__mc68000__) - { - unsigned long fp, pc; - unsigned long stack_page; - int count = 0; - extern int sys_pause (void); - - stack_page = p->kernel_stack_page; - if (!stack_page) - return 0; - fp = ((struct switch_stack *)p->tss.ksp)->a6; - do { - if (fp < stack_page || fp >= 4088+stack_page) - return 0; - pc = ((unsigned long *)fp)[1]; - /* FIXME: This depends on the order of these functions. */ - if (pc < first_sched || pc >= last_sched) - return pc; - fp = *(unsigned long *) fp; - } while (count++ < 16); - } -#elif defined(__powerpc__) - return (p->tss.wchan); -#elif defined (CONFIG_ARM) - { - unsigned long fp, lr; - unsigned long stack_page; - int count = 0; - - stack_page = 4096 + (unsigned long)p; - fp = get_css_fp (&p->tss); - do { - if (fp < stack_page || fp > 4092+stack_page) - return 0; - lr = pc_pointer (((unsigned long *)fp)[-1]); - if (lr < first_sched || lr > last_sched) - return lr; - fp = *(unsigned long *) (fp - 12); - } while (count ++ < 16); - } -#endif - return 0; -} - -#if defined(__i386__) -# define KSTK_EIP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1019]) -# define KSTK_ESP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1022]) -#elif defined(__alpha__) - /* - * See arch/alpha/kernel/ptrace.c for details. - */ -# define PT_REG(reg) (PAGE_SIZE - sizeof(struct pt_regs) \ - + (long)&((struct pt_regs *)0)->reg) -# define KSTK_EIP(tsk) \ - (*(unsigned long *)(PT_REG(pc) + PAGE_SIZE + (unsigned long)(tsk))) -# define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->tss.usp) -#elif defined(CONFIG_ARM) -# define KSTK_EIP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1022]) -# define KSTK_ESP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1020]) -#elif defined(__mc68000__) -#define KSTK_EIP(tsk) \ - ({ \ - unsigned long eip = 0; \ - if ((tsk)->tss.esp0 > PAGE_SIZE && \ - MAP_NR((tsk)->tss.esp0) < max_mapnr) \ - eip = ((struct pt_regs *) (tsk)->tss.esp0)->pc; \ - eip; }) -#define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->tss.usp) -#elif defined(__powerpc__) -#define KSTK_EIP(tsk) ((tsk)->tss.regs->nip) -#define KSTK_ESP(tsk) ((tsk)->tss.regs->gpr[1]) -#elif defined (__sparc_v9__) -# define KSTK_EIP(tsk) ((tsk)->tss.kregs->tpc) -# define KSTK_ESP(tsk) ((tsk)->tss.kregs->u_regs[UREG_FP]) -#elif defined(__sparc__) -# define KSTK_EIP(tsk) ((tsk)->tss.kregs->pc) -# define KSTK_ESP(tsk) ((tsk)->tss.kregs->u_regs[UREG_FP]) -#endif - -/* Gcc optimizes away "strlen(x)" for constant x */ -#define ADDBUF(buffer, string) \ -do { memcpy(buffer, string, strlen(string)); \ - buffer += strlen(string); } while (0) - -static inline void statm_pte_range(pmd_t * pmd, unsigned long address, unsigned long size, - int * pages, int * shared, int * dirty, int * total) -{ - pte_t * pte; - unsigned long end; - - if (pmd_none(*pmd)) - return; - if (pmd_bad(*pmd)) { - printk("statm_pte_range: bad pmd (%08lx)\n", pmd_val(*pmd)); - pmd_clear(pmd); - return; - } - pte = pte_offset(pmd, address); - address &= ~PMD_MASK; - end = address + size; - if (end > PMD_SIZE) - end = PMD_SIZE; - do { - pte_t page = *pte; - - address += PAGE_SIZE; - pte++; - if (pte_none(page)) - continue; - ++*total; - if (!pte_present(page)) - continue; - ++*pages; - if (pte_dirty(page)) - ++*dirty; - if (MAP_NR(pte_page(page)) >= max_mapnr) - continue; - if (atomic_read(&mem_map[MAP_NR(pte_page(page))].count) > 1) - ++*shared; - } while (address < end); -} - -static inline void statm_pmd_range(pgd_t * pgd, unsigned long address, unsigned long size, - int * pages, int * shared, int * dirty, int * total) -{ - pmd_t * pmd; - unsigned long end; - - if (pgd_none(*pgd)) - return; - if (pgd_bad(*pgd)) { - printk("statm_pmd_range: bad pgd (%08lx)\n", pgd_val(*pgd)); - pgd_clear(pgd); - return; - } - pmd = pmd_offset(pgd, address); - address &= ~PGDIR_MASK; - end = address + size; - if (end > PGDIR_SIZE) - end = PGDIR_SIZE; - do { - statm_pte_range(pmd, address, end - address, pages, shared, dirty, total); - address = (address + PMD_SIZE) & PMD_MASK; - pmd++; - } while (address < end); -} - -static void statm_pgd_range(pgd_t * pgd, unsigned long address, unsigned long end, - int * pages, int * shared, int * dirty, int * total) -{ - while (address < end) { - statm_pmd_range(pgd, address, end - address, pages, shared, dirty, total); - address = (address + PGDIR_SIZE) & PGDIR_MASK; - pgd++; - } -} - -int -table_fkt (int type, union table *buf, const void *param) -{ - union table tbl; - struct sysinfo i; - struct task_struct *tsk = NULL; - struct proclist_args plistargs; - int index, tindex, err, tty; - sigset_t sigign, sigcatch; - pid_t pid; - - if (type == TABLE_VERSION) - return _TABLE_VERSION; - - if (!buf) - return -EFAULT; - - memset (&tbl, 0, sizeof (union table)); - - /* For TABLE_PROC_*, read pid and get task_struct */ - - switch (type) { - case TABLE_PROC_UID: - case TABLE_PROC_MEM: - case TABLE_PROC_SEGMENT: - case TABLE_PROC_TIME: - case TABLE_PROC_STATE: - case TABLE_PROC_SIGNAL: - case TABLE_PROC_KERNEL: - err = verify_area (VERIFY_READ, param, sizeof (pid_t)); - if (err) - return err; - copy_from_user (&pid, param, sizeof (pid_t)); - - read_lock (&tasklist_lock); - tsk = find_task_by_pid (pid); - /* FIXME!! This should be done after the last use */ - read_unlock(&tasklist_lock); - - if (tsk == NULL) - return -ESRCH; - break; - case TABLE_PROCLIST: - err = verify_area (VERIFY_READ, param, - sizeof (struct proclist_args)); - if (err) - return err; - copy_from_user (&plistargs, param, - sizeof (struct proclist_args)); - break; - } - - /* Main function dispatcher */ - - switch (type) { - case TABLE_PROCLIST: - tsk = task [0]; - read_lock (&tasklist_lock); - for (index = tindex = 0; index < nr_tasks; - index++, tsk = tsk->next_task) { - if (tsk->pid == 0) continue; - switch (plistargs.which & TABLE_KERN_PROC_MASK) { - case TABLE_KERN_PROC_PID: - if (tsk->pid != plistargs.arg) continue; - break; - case TABLE_KERN_PROC_PGRP: - if (tsk->pgrp != plistargs.arg) continue; - break; - case TABLE_KERN_PROC_SESSION: - if (tsk->session != plistargs.arg) continue; - case TABLE_KERN_PROC_TTY: - tty = tsk->tty ? - kdev_t_to_nr (tsk->tty->device) : 0; - if (tty != plistargs.arg) continue; - break; - case TABLE_KERN_PROC_UID: - if (tsk->uid != plistargs.arg) continue; - break; - case TABLE_KERN_PROC_RUID: - if (tsk->euid != plistargs.arg) continue; - break; - } - - if ((plistargs.which & TABLE_EXCLUDE_IDLE) && - (tsk->state != 0)) - continue; - - if ((plistargs.which & TABLE_EXCLUDE_NOTTY) && - (tsk->tty == NULL)) - continue; - - tbl.proclist.pids [tindex++] = tsk->pid; - } - tbl.proclist.nr_running = nr_running; - tbl.proclist.last_pid = last_pid; - tbl.proclist.nr_tasks = tindex; - read_unlock(&tasklist_lock); - break; - case TABLE_CPU: - tbl.cpu.total = jiffies; - tbl.cpu.user = kstat.cpu_user; - tbl.cpu.nice = kstat.cpu_nice; - tbl.cpu.sys = kstat.cpu_system; - tbl.cpu.idle = tbl.cpu.total - - (tbl.cpu.user + tbl.cpu.nice + tbl.cpu.sys); - tbl.cpu.frequency = HZ; - break; - case TABLE_MEM: - si_meminfo (&i); - tbl.mem.total = i.totalram; - tbl.mem.used = i.totalram - i.freeram; - tbl.mem.free = i.freeram; - tbl.mem.shared = i.sharedram; - tbl.mem.buffer = i.bufferram; - tbl.mem.cached = page_cache_size << PAGE_SHIFT; - break; - case TABLE_SWAP: - si_swapinfo (&i); - tbl.swap.total = i.totalswap; - tbl.swap.used = i.totalswap - i.freeswap; - tbl.swap.free = i.freeswap; - break; - case TABLE_LOADAVG: - tbl.loadavg.loadavg [0] = (double) avenrun [0] / (1 << FSHIFT); - tbl.loadavg.loadavg [1] = (double) avenrun [1] / (1 << FSHIFT); - tbl.loadavg.loadavg [2] = (double) avenrun [2] / (1 << FSHIFT); - tbl.loadavg.nr_running = nr_running; - tbl.loadavg.nr_tasks = nr_tasks; - tbl.loadavg.last_pid = last_pid; - break; - case TABLE_UPTIME: - tbl.uptime.uptime = jiffies; - tbl.uptime.idle = task[0]->times.tms_utime + - task[0]->times.tms_stime; - break; - case TABLE_PROC_STATE: - tbl.proc_state.uid = tsk->uid; - tbl.proc_state.gid = tsk->gid; - tbl.proc_state.state = tsk->state; - tbl.proc_state.flags = tsk->flags; - memcpy (tbl.proc_state.comm, tsk->comm, - sizeof (tbl.proc_state.comm)); - break; - case TABLE_PROC_UID: - tbl.proc_uid.uid = tsk->uid; - tbl.proc_uid.euid = tsk->euid; - tbl.proc_uid.suid = tsk->suid; - tbl.proc_uid.fsuid = tsk->fsuid; - - tbl.proc_uid.gid = tsk->gid; - tbl.proc_uid.egid = tsk->egid; - tbl.proc_uid.sgid = tsk->sgid; - tbl.proc_uid.fsgid = tsk->fsgid; - - tbl.proc_uid.pid = tsk->pid; - tbl.proc_uid.pgrp = tsk->pgrp; - tbl.proc_uid.ppid = tsk->p_pptr->pid; - - tbl.proc_uid.session = tsk->session; - tbl.proc_uid.tty = tsk->tty ? - kdev_t_to_nr (tsk->tty->device) : 0; - tbl.proc_uid.tpgid = tsk->tty ? tsk->tty->pgrp : -1; - - tbl.proc_uid.priority = tsk->priority; - tbl.proc_uid.counter = tsk->counter; - tbl.proc_uid.def_priority = DEF_PRIORITY; - break; - case TABLE_PROC_SIGNAL: - memcpy (&tbl.proc_signal.signal, &tsk->signal, - sizeof (tbl.proc_signal.signal)); - - memcpy (&tbl.proc_signal.blocked, &tsk->blocked, - sizeof (tbl.proc_signal.blocked)); - - collect_sigign_sigcatch (tsk, &sigign, &sigcatch); - - memcpy (&tbl.proc_signal.ignored, &sigign, - sizeof (tbl.proc_signal.ignored)); - - memcpy (&tbl.proc_signal.caught, &sigcatch, - sizeof (tbl.proc_signal.caught)); - -#if 0 - printk ("PROC_SIGNAL: (%lu, %lu) - (%lu, %lu)\n", - tbl.proc_signal.ignored.sig [0], - tbl.proc_signal.ignored.sig [1], - tbl.proc_signal.caught.sig [0], - tbl.proc_signal.caught.sig [1]); -#endif - break; - case TABLE_PROC_MEM: - if (tsk->mm && tsk->mm != &init_mm) { - tbl.proc_mem.context = tsk->mm->context; - tbl.proc_mem.start_code = tsk->mm->start_code; - tbl.proc_mem.end_code = tsk->mm->end_code; - tbl.proc_mem.start_data = tsk->mm-> start_data; - tbl.proc_mem.end_data = tsk->mm->end_data; - tbl.proc_mem.start_brk = tsk->mm->start_brk; - tbl.proc_mem.brk = tsk->mm->brk; - tbl.proc_mem.start_stack = tsk->mm->start_stack; - tbl.proc_mem.start_mmap = tsk->mm->mmap ? - tsk->mm->mmap->vm_start : 0; - tbl.proc_mem.arg_start = tsk->mm->arg_start; - tbl.proc_mem.arg_end = tsk->mm->arg_end; - tbl.proc_mem.env_start = tsk->mm->env_start; - tbl.proc_mem.env_end = tsk->mm->env_end; - tbl.proc_mem.rss = tsk->mm->rss << PAGE_SHIFT; - tbl.proc_mem.total_vm = tsk->mm->total_vm; - tbl.proc_mem.locked_vm = tsk->mm->locked_vm; - } - tbl.proc_mem.rlim = tsk->rlim ? tsk->rlim[RLIMIT_RSS].rlim_cur : 0; - break; - case TABLE_PROC_SEGMENT: - if (tsk->mm && tsk->mm != &init_mm) { - unsigned long vsize = 0; - int size = 0, resident = 0, share = 0; - int trs = 0, lrs = 0, drs = 0, srs = 0, dt = 0; - struct vm_area_struct * vma = tsk->mm->mmap; - - while (vma) { - pgd_t *pgd = pgd_offset(tsk->mm, vma->vm_start); - int pages = 0, shared = 0, dirty = 0, total = 0; - - vsize += vma->vm_end - vma->vm_start; - - statm_pgd_range (pgd, vma->vm_start, vma->vm_end, - - &pages, &shared, &dirty, &total); - - resident += pages; - share += shared; - dt += dirty; - size += total; - - /* Well, shared library seem to get mapped - * above 0x40000000 and are executable, - * so I use this hack to get their size. - */ - - if (vma->vm_flags & VM_GROWSDOWN) - srs += pages; /* stack */ - else if ((vma->vm_flags & VM_EXEC) && - (vma->vm_start > 0x40000000)) - lrs += pages; /* library */ - else if (vma->vm_flags & VM_EXECUTABLE) - trs += pages; /* text */ - else - drs += pages; - - vma = vma->vm_next; - } - - tbl.proc_segment.vsize = vsize; - tbl.proc_segment.size = size << PAGE_SHIFT; - tbl.proc_segment.resident = resident << PAGE_SHIFT; - tbl.proc_segment.shared = share << PAGE_SHIFT; - tbl.proc_segment.trs = trs << PAGE_SHIFT; - tbl.proc_segment.lrs = lrs << PAGE_SHIFT; - tbl.proc_segment.drs = drs << PAGE_SHIFT; - tbl.proc_segment.srs = srs << PAGE_SHIFT; - tbl.proc_segment.dt = dt << PAGE_SHIFT; - } - break; - case TABLE_PROC_TIME: - tbl.proc_time.utime = tsk->times.tms_utime; - tbl.proc_time.stime = tsk->times.tms_stime; - tbl.proc_time.cutime = tsk->times.tms_cutime; - tbl.proc_time.cstime = tsk->times.tms_cstime; - - tbl.proc_time.start_time = tsk->start_time; - tbl.proc_time.timeout = tsk->timeout; - tbl.proc_time.policy = tsk->policy; - tbl.proc_time.rt_priority = tsk->rt_priority; - - tbl.proc_time.it_real_value = tsk->it_real_value; - tbl.proc_time.it_prof_value = tsk->it_prof_value; - tbl.proc_time.it_virt_value = tsk->it_virt_value; - tbl.proc_time.it_real_incr = tsk->it_real_incr; - tbl.proc_time.it_prof_incr = tsk->it_prof_incr; - tbl.proc_time.it_virt_incr = tsk->it_virt_incr; - break; - case TABLE_PROC_KERNEL: - tbl.proc_kernel.min_flt = tsk->min_flt; - tbl.proc_kernel.cmin_flt = tsk->cmin_flt; - tbl.proc_kernel.maj_flt = tsk->maj_flt; - tbl.proc_kernel.cmaj_flt = tsk->cmaj_flt; - - tbl.proc_kernel.kesp = KSTK_ESP(tsk); - tbl.proc_kernel.keip = KSTK_EIP(tsk); - - tbl.proc_kernel.nswap = tsk->nswap; - tbl.proc_kernel.cnswap = tsk->cnswap; - - tbl.proc_kernel.wchan = get_wchan (tsk); - break; - default: - return -EINVAL; - } - - err = verify_area (VERIFY_WRITE, buf, sizeof (struct table)); - if (err) - return err; - - copy_to_user (buf, &tbl, sizeof (union table)); - - return 0; -} diff --git a/kernel/table21/unistd-i386.h b/kernel/table21/unistd-i386.h deleted file mode 100644 index a7c30c83..00000000 --- a/kernel/table21/unistd-i386.h +++ /dev/null @@ -1,344 +0,0 @@ -#ifndef _ASM_I386_UNISTD_H_ -#define _ASM_I386_UNISTD_H_ - -/* - * This file contains the system call numbers. - */ - -#define __NR_setup 0 /* used only by init, to get system going */ -#define __NR_exit 1 -#define __NR_fork 2 -#define __NR_read 3 -#define __NR_write 4 -#define __NR_open 5 -#define __NR_close 6 -#define __NR_waitpid 7 -#define __NR_creat 8 -#define __NR_link 9 -#define __NR_unlink 10 -#define __NR_execve 11 -#define __NR_chdir 12 -#define __NR_time 13 -#define __NR_mknod 14 -#define __NR_chmod 15 -#define __NR_lchown 16 -#define __NR_break 17 -#define __NR_oldstat 18 -#define __NR_lseek 19 -#define __NR_getpid 20 -#define __NR_mount 21 -#define __NR_umount 22 -#define __NR_setuid 23 -#define __NR_getuid 24 -#define __NR_stime 25 -#define __NR_ptrace 26 -#define __NR_alarm 27 -#define __NR_oldfstat 28 -#define __NR_pause 29 -#define __NR_utime 30 -#define __NR_stty 31 -#define __NR_gtty 32 -#define __NR_access 33 -#define __NR_nice 34 -#define __NR_ftime 35 -#define __NR_sync 36 -#define __NR_kill 37 -#define __NR_rename 38 -#define __NR_mkdir 39 -#define __NR_rmdir 40 -#define __NR_dup 41 -#define __NR_pipe 42 -#define __NR_times 43 -#define __NR_prof 44 -#define __NR_brk 45 -#define __NR_setgid 46 -#define __NR_getgid 47 -#define __NR_signal 48 -#define __NR_geteuid 49 -#define __NR_getegid 50 -#define __NR_acct 51 -#define __NR_phys 52 -#define __NR_lock 53 -#define __NR_ioctl 54 -#define __NR_fcntl 55 -#define __NR_mpx 56 -#define __NR_setpgid 57 -#define __NR_ulimit 58 -#define __NR_oldolduname 59 -#define __NR_umask 60 -#define __NR_chroot 61 -#define __NR_ustat 62 -#define __NR_dup2 63 -#define __NR_getppid 64 -#define __NR_getpgrp 65 -#define __NR_setsid 66 -#define __NR_sigaction 67 -#define __NR_sgetmask 68 -#define __NR_ssetmask 69 -#define __NR_setreuid 70 -#define __NR_setregid 71 -#define __NR_sigsuspend 72 -#define __NR_sigpending 73 -#define __NR_sethostname 74 -#define __NR_setrlimit 75 -#define __NR_getrlimit 76 -#define __NR_getrusage 77 -#define __NR_gettimeofday 78 -#define __NR_settimeofday 79 -#define __NR_getgroups 80 -#define __NR_setgroups 81 -#define __NR_select 82 -#define __NR_symlink 83 -#define __NR_oldlstat 84 -#define __NR_readlink 85 -#define __NR_uselib 86 -#define __NR_swapon 87 -#define __NR_reboot 88 -#define __NR_readdir 89 -#define __NR_mmap 90 -#define __NR_munmap 91 -#define __NR_truncate 92 -#define __NR_ftruncate 93 -#define __NR_fchmod 94 -#define __NR_fchown 95 -#define __NR_getpriority 96 -#define __NR_setpriority 97 -#define __NR_profil 98 -#define __NR_statfs 99 -#define __NR_fstatfs 100 -#define __NR_ioperm 101 -#define __NR_socketcall 102 -#define __NR_syslog 103 -#define __NR_setitimer 104 -#define __NR_getitimer 105 -#define __NR_stat 106 -#define __NR_lstat 107 -#define __NR_fstat 108 -#define __NR_olduname 109 -#define __NR_iopl 110 -#define __NR_vhangup 111 -#define __NR_idle 112 -#define __NR_vm86old 113 -#define __NR_wait4 114 -#define __NR_swapoff 115 -#define __NR_sysinfo 116 -#define __NR_ipc 117 -#define __NR_fsync 118 -#define __NR_sigreturn 119 -#define __NR_clone 120 -#define __NR_setdomainname 121 -#define __NR_uname 122 -#define __NR_modify_ldt 123 -#define __NR_adjtimex 124 -#define __NR_mprotect 125 -#define __NR_sigprocmask 126 -#define __NR_create_module 127 -#define __NR_init_module 128 -#define __NR_delete_module 129 -#define __NR_get_kernel_syms 130 -#define __NR_quotactl 131 -#define __NR_getpgid 132 -#define __NR_fchdir 133 -#define __NR_bdflush 134 -#define __NR_sysfs 135 -#define __NR_personality 136 -#define __NR_afs_syscall 137 /* Syscall for Andrew File System */ -#define __NR_setfsuid 138 -#define __NR_setfsgid 139 -#define __NR__llseek 140 -#define __NR_getdents 141 -#define __NR__newselect 142 -#define __NR_flock 143 -#define __NR_msync 144 -#define __NR_readv 145 -#define __NR_writev 146 -#define __NR_getsid 147 -#define __NR_fdatasync 148 -#define __NR__sysctl 149 -#define __NR_mlock 150 -#define __NR_munlock 151 -#define __NR_mlockall 152 -#define __NR_munlockall 153 -#define __NR_sched_setparam 154 -#define __NR_sched_getparam 155 -#define __NR_sched_setscheduler 156 -#define __NR_sched_getscheduler 157 -#define __NR_sched_yield 158 -#define __NR_sched_get_priority_max 159 -#define __NR_sched_get_priority_min 160 -#define __NR_sched_rr_get_interval 161 -#define __NR_nanosleep 162 -#define __NR_mremap 163 -#define __NR_setresuid 164 -#define __NR_getresuid 165 -#define __NR_vm86 166 -#define __NR_query_module 167 -#define __NR_poll 168 -#define __NR_nfsservctl 169 -#define __NR_setresgid 170 -#define __NR_getresgid 171 -#define __NR_prctl 172 -#define __NR_rt_sigreturn 173 -#define __NR_rt_sigaction 174 -#define __NR_rt_sigprocmask 175 -#define __NR_rt_sigpending 176 -#define __NR_rt_sigtimedwait 177 -#define __NR_rt_sigqueueinfo 178 -#define __NR_rt_sigsuspend 179 -#define __NR_pread 180 -#define __NR_pwrite 181 -#define __NR_chown 182 -#define __NR_getcwd 183 -#define __NR_capget 184 -#define __NR_capset 185 -#define __NR_sigaltstack 186 -#define __NR_sendfile 187 -#define __NR_streams1 188 /* some people actually want it */ -#define __NR_streams2 189 /* some people actually want it */ -#define __NR_table 190 - -/* user-visible error numbers are in the range -1 - -122: see */ - -#define __syscall_return(type, res) \ -do { \ - if ((unsigned long)(res) >= (unsigned long)(-125)) { \ - errno = -(res); \ - res = -1; \ - } \ - return (type) (res); \ -} while (0) - -/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */ -#define _syscall0(type,name) \ -type name(void) \ -{ \ -long __res; \ -__asm__ volatile ("int $0x80" \ - : "=a" (__res) \ - : "0" (__NR_##name)); \ -__syscall_return(type,__res); \ -} - -#define _syscall1(type,name,type1,arg1) \ -type name(type1 arg1) \ -{ \ -long __res; \ -__asm__ volatile ("int $0x80" \ - : "=a" (__res) \ - : "0" (__NR_##name),"b" ((long)(arg1))); \ -__syscall_return(type,__res); \ -} - -#define _syscall2(type,name,type1,arg1,type2,arg2) \ -type name(type1 arg1,type2 arg2) \ -{ \ -long __res; \ -__asm__ volatile ("int $0x80" \ - : "=a" (__res) \ - : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \ -__syscall_return(type,__res); \ -} - -#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ -type name(type1 arg1,type2 arg2,type3 arg3) \ -{ \ -long __res; \ -__asm__ volatile ("int $0x80" \ - : "=a" (__res) \ - : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ - "d" ((long)(arg3))); \ -__syscall_return(type,__res); \ -} - -#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ -type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ -{ \ -long __res; \ -__asm__ volatile ("int $0x80" \ - : "=a" (__res) \ - : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ - "d" ((long)(arg3)),"S" ((long)(arg4))); \ -__syscall_return(type,__res); \ -} - -#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ -{ \ -long __res; \ -__asm__ volatile ("int $0x80" \ - : "=a" (__res) \ - : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ - "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5))); \ -__syscall_return(type,__res); \ -} - -#ifdef __KERNEL_SYSCALLS__ - -/* - * we need this inline - forking from kernel space will result - * in NO COPY ON WRITE (!!!), until an execve is executed. This - * is no problem, but for the stack. This is handled by not letting - * main() use the stack at all after fork(). Thus, no function - * calls - which means inline code for fork too, as otherwise we - * would use the stack upon exit from 'fork()'. - * - * Actually only pause and fork are needed inline, so that there - * won't be any messing with the stack from main(), but we define - * some others too. - */ -#define __NR__exit __NR_exit -static inline _syscall0(int,idle) -static inline _syscall0(int,pause) -static inline _syscall1(int,setup,int,magic) -static inline _syscall0(int,sync) -static inline _syscall0(pid_t,setsid) -static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count) -static inline _syscall3(int,read,int,fd,char *,buf,off_t,count) -static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count) -static inline _syscall1(int,dup,int,fd) -static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) -static inline _syscall3(int,open,const char *,file,int,flag,int,mode) -static inline _syscall1(int,close,int,fd) -static inline _syscall1(int,_exit,int,exitcode) -static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) -static inline _syscall1(int,delete_module,const char *,name) - -static inline pid_t wait(int * wait_stat) -{ - return waitpid(-1,wait_stat,0); -} - -/* - * This is the mechanism for creating a new kernel thread. - * - * NOTE! Only a kernel-only process(ie the swapper or direct descendants - * who haven't done an "execve()") should use this: it will work within - * a system call from a "real" process, but the process memory space will - * not be free'd until both the parent and the child have exited. - */ -static inline pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) -{ - long retval; - - __asm__ __volatile__( - "movl %%esp,%%esi\n\t" - "int $0x80\n\t" /* Linux/i386 system call */ - "cmpl %%esp,%%esi\n\t" /* child or parent? */ - "je 1f\n\t" /* parent - jump */ - "pushl %3\n\t" /* push argument */ - "call *%4\n\t" /* call fn */ - "movl %2,%0\n\t" /* exit */ - "int $0x80\n" - "1:\t" - :"=a" (retval) - :"0" (__NR_clone), "i" (__NR_exit), - "r" (arg), "r" (fn), - "b" (flags | CLONE_VM) - :"si"); - return retval; -} - -#endif - -#endif /* _ASM_I386_UNISTD_H_ */ diff --git a/kernel/table21/version.h b/kernel/table21/version.h deleted file mode 100644 index d47411ee..00000000 --- a/kernel/table21/version.h +++ /dev/null @@ -1 +0,0 @@ -#define _TABLE_VERSION 1 diff --git a/kernel/version.h b/kernel/version.h deleted file mode 100644 index d47411ee..00000000 --- a/kernel/version.h +++ /dev/null @@ -1 +0,0 @@ -#define _TABLE_VERSION 1 diff --git a/libgtop-sysdeps.m4 b/libgtop-sysdeps.m4 index 01e79ae1..7dbf7074 100644 --- a/libgtop-sysdeps.m4 +++ b/libgtop-sysdeps.m4 @@ -15,45 +15,6 @@ AC_DEFUN([LIBGTOP_HACKER_TESTS],[ case "$host_os" in linux*) - AC_ARG_WITH(linux-table, - [ --with-linux-table Use the table () function from Martin Baulig],[ - linux_table="$withval"],[linux_table=auto]) - if test $linux_table = yes ; then - AC_CHECK_HEADER(linux/table.h, linux_table=yes, linux_table=no) - elif test $linux_table = auto ; then - AC_MSG_CHECKING(for table function in Linux Kernel) - AC_TRY_RUN([ -#include -#include - -#include -#include -#include - -#include - -static inline _syscall3 (int, table, int, type, union table *, tbl, const void *, param); - -int -main (void) -{ - union table tbl; - int ret; - - ret = table (TABLE_VERSION, NULL, NULL); - - if (ret == -1) - exit (-errno); - - exit (ret < 1 ? ret : 0); -} -], linux_table=yes, linux_table=no, linux_table=no) - AC_MSG_RESULT($linux_table) - fi - if test $linux_table = yes ; then - AC_DEFINE(HAVE_LINUX_TABLE) - fi - AM_CONDITIONAL(LINUX_TABLE, test $linux_table = yes) ;; esac ]) @@ -108,14 +69,9 @@ AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[ case "$host_os" in linux*) - if test x$linux_table = xyes ; then - libgtop_sysdeps_dir=kernel - libgtop_use_machine_h=no - else - libgtop_sysdeps_dir=linux - libgtop_use_machine_h=no - libgtop_have_sysinfo=yes - fi + libgtop_sysdeps_dir=linux + libgtop_use_machine_h=no + libgtop_have_sysinfo=yes libgtop_need_server=no ;; freebsd*|netbsd*|openbsd*) diff --git a/sysdeps/kernel/.cvsignore b/sysdeps/kernel/.cvsignore deleted file mode 100644 index b851d091..00000000 --- a/sysdeps/kernel/.cvsignore +++ /dev/null @@ -1,28 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -close.lo -cpu.lo -init.lo -ipc_limits.lo -libgtop_sysdeps.la -loadavg.lo -mem.lo -msg_limits.lo -open.lo -procdata.lo -prockernel.lo -proclist.lo -procmem.lo -procsegment.lo -procsignal.lo -procstate.lo -proctime.lo -procuid.lo -sem_limits.lo -shm_limits.lo -swap.lo -sysdeps.lo -sysinfo.lo -uptime.lo diff --git a/sysdeps/kernel/ChangeLog b/sysdeps/kernel/ChangeLog deleted file mode 100644 index bfca82c0..00000000 --- a/sysdeps/kernel/ChangeLog +++ /dev/null @@ -1,23 +0,0 @@ -1998-10-26 Martin Baulig - - * netload.c: New file. Currently empty. - -1998-10-26 Martin Baulig - - * procargs.c: New file. Currently empty. - -1998-10-25 Martin Baulig - - * ppp.c: New file. Currently empty. - -1998-06-14 Martin Baulig - - * kernel.s: New file - declaration of the table () function - via _syscall3 (); due to a bug in egcs, we cannot put this - into a C file. - -1998-06-13 Martin Baulig - - The code in this directory fetches all information - directly from the kernel. It uses the new table () - system call from the `kernel' directory. diff --git a/sysdeps/kernel/Makefile.am b/sysdeps/kernel/Makefile.am deleted file mode 100644 index 0bf368c5..00000000 --- a/sysdeps/kernel/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ - -INCLUDES = @INCLUDES@ - -lib_LTLIBRARIES = libgtop_sysdeps.la - -libgtop_sysdeps_la_SOURCES = open.c close.c kernel.s cpu.c mem.c swap.c \ - uptime.c loadavg.c shm_limits.c msg_limits.c \ - sem_limits.c proclist.c procstate.c procuid.c \ - proctime.c procmem.c procsignal.c prockernel.c \ - procsegment.c siglist.c procargs.c procmap.c \ - netload.c ppp.c - -libgtop_sysdeps_la_LDFLAGS = $(LT_VERSION_INFO) - -include_HEADERS = glibtop_server.h - -noinst_HEADERS = kernel.h - -kernel.o kernel.lo: $(srcdir)/kernel.s - rm -f kernel.o kernel.lo - $(AS) -o kernel.o $(srcdir)/kernel.s - cp kernel.o kernel.lo - diff --git a/sysdeps/kernel/close.c b/sysdeps/kernel/close.c deleted file mode 100644 index 4262d2f0..00000000 --- a/sysdeps/kernel/close.c +++ /dev/null @@ -1,30 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include - -/* Closes pipe to gtop server. */ - -void -glibtop_close_s (glibtop *server) -{ } diff --git a/sysdeps/kernel/cpu.c b/sysdeps/kernel/cpu.c deleted file mode 100644 index 1a7127ba..00000000 --- a/sysdeps/kernel/cpu.c +++ /dev/null @@ -1,65 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static const unsigned long _glibtop_sysdeps_cpu = -(1 << GLIBTOP_CPU_TOTAL) + (1 << GLIBTOP_CPU_USER) + -(1 << GLIBTOP_CPU_NICE) + (1 << GLIBTOP_CPU_SYS) + -(1 << GLIBTOP_CPU_IDLE) + (1 << GLIBTOP_CPU_FREQUENCY); - -/* Init function. */ - -void -glibtop_init_cpu_s (glibtop *server) -{ - server->sysdeps.cpu = _glibtop_sysdeps_cpu; -} - -/* Provides information about cpu usage. */ - -void -glibtop_get_cpu_s (glibtop *server, glibtop_cpu *buf) -{ - union table tbl; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_CPU, 0); - - memset (buf, 0, sizeof (glibtop_cpu)); - - if (table (TABLE_CPU, &tbl, NULL)) - glibtop_error_io_r (server, "table(TABLE_CPU)"); - - buf->flags = _glibtop_sysdeps_cpu; - - buf->total = tbl.cpu.total; - buf->user = tbl.cpu.user; - buf->nice = tbl.cpu.nice; - buf->sys = tbl.cpu.sys; - buf->idle = tbl.cpu.idle; - buf->frequency = tbl.cpu.frequency; -} diff --git a/sysdeps/kernel/glibtop_server.h b/sysdeps/kernel/glibtop_server.h deleted file mode 100644 index b3822d47..00000000 --- a/sysdeps/kernel/glibtop_server.h +++ /dev/null @@ -1,52 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#ifndef __GLIBTOP_SERVER_H__ -#define __GLIBTOP_SERVER_H__ - -BEGIN_LIBGTOP_DECLS - -#define GLIBTOP_SUID_CPU 0 -#define GLIBTOP_SUID_MEM 0 -#define GLIBTOP_SUID_SWAP 0 -#define GLIBTOP_SUID_UPTIME 0 -#define GLIBTOP_SUID_LOADAVG 0 -#define GLIBTOP_SUID_SHM_LIMITS 0 -#define GLIBTOP_SUID_MSG_LIMITS 0 -#define GLIBTOP_SUID_SEM_LIMITS 0 -#define GLIBTOP_SUID_PROCLIST 0 -#define GLIBTOP_SUID_PROC_STATE 0 -#define GLIBTOP_SUID_PROC_UID 0 -#define GLIBTOP_SUID_PROC_MEM 0 -#define GLIBTOP_SUID_PROC_TIME 0 -#define GLIBTOP_SUID_PROC_SIGNAL 0 -#define GLIBTOP_SUID_PROC_KERNEL 0 -#define GLIBTOP_SUID_PROC_SEGMENT 0 -#define GLIBTOP_SUID_PROC_ARGS 0 -#define GLIBTOP_SUID_PROC_MAP 0 -#define GLIBTOP_SUID_NETLOAD 0 -#define GLIBTOP_SUID_PPP 0 - -END_LIBGTOP_DECLS - -#endif diff --git a/sysdeps/kernel/kernel.h b/sysdeps/kernel/kernel.h deleted file mode 100644 index bfa8ac9f..00000000 --- a/sysdeps/kernel/kernel.h +++ /dev/null @@ -1,40 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#ifndef __GLIBTOP_KERNEL_KERNEL_H__ -#define __GLIBTOP_KERNEL_KERNEL_H__ - -#include -#include - -#include - -#include - -BEGIN_LIBGTOP_DECLS - -extern int table (int, union table *, const void *); - -END_LIBGTOP_DECLS - -#endif diff --git a/sysdeps/kernel/kernel.s b/sysdeps/kernel/kernel.s deleted file mode 100644 index d6b368c1..00000000 --- a/sysdeps/kernel/kernel.s +++ /dev/null @@ -1,42 +0,0 @@ - .file "test.c" - .version "01.01" -/ GNU C version egcs-2.90.29 980515 (egcs-1.0.3 release) (i686-pc-linux-gnu) compiled by GNU C version egcs-2.90.29 980515 (egcs-1.0.3 release). -/ options passed: -O2 -Wall -W -/ options enabled: -fdefer-pop -fcse-follow-jumps -fcse-skip-blocks -/ -fexpensive-optimizations -fthread-jumps -fstrength-reduce -fpeephole -/ -fforce-mem -ffunction-cse -finline -fkeep-static-consts -fcaller-saves -/ -fpcc-struct-return -frerun-cse-after-loop -frerun-loop-opt -/ -fschedule-insns2 -fcommon -fverbose-asm -fgnu-linker -fregmove -/ -falias-check -fargument-alias -m80387 -mhard-float -mno-soft-float -/ -mieee-fp -mfp-ret-in-387 -mschedule-prologue -mcpu=pentiumpro -/ -march=pentium - -gcc2_compiled.: -.text - .align 4 -.globl table - .type table,@function -table: - pushl %ebp - movl %esp,%ebp - movl $190,%eax - pushl %ebx - movl 8(%ebp),%ebx - movl 12(%ebp),%ecx - movl 16(%ebp),%edx -#APP - int $0x80 -#NO_APP - testl %eax,%eax - jge .L3 - negl %eax - movl %eax,errno - movl $-1,%eax -.L3: - movl -4(%ebp),%ebx - movl %ebp,%esp - popl %ebp - ret -.Lfe1: - .size table,.Lfe1-table - .ident "GCC: (GNU) egcs-2.90.29 980515 (egcs-1.0.3 release)" diff --git a/sysdeps/kernel/loadavg.c b/sysdeps/kernel/loadavg.c deleted file mode 100644 index a31712d9..00000000 --- a/sysdeps/kernel/loadavg.c +++ /dev/null @@ -1,65 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static const unsigned long _glibtop_sysdeps_loadavg = -(1 << GLIBTOP_LOADAVG_LOADAVG) + (1 << GLIBTOP_LOADAVG_NR_RUNNING) + -(1 << GLIBTOP_LOADAVG_NR_TASKS) + (1 << GLIBTOP_LOADAVG_LAST_PID); - -/* Init function. */ - -void -glibtop_init_loadavg_s (glibtop *server) -{ - server->sysdeps.loadavg = _glibtop_sysdeps_loadavg; -} - -/* Provides load load averange. */ - -void -glibtop_get_loadavg_s (glibtop *server, glibtop_loadavg *buf) -{ - union table tbl; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_LOADAVG, 0); - - memset (buf, 0, sizeof (glibtop_loadavg)); - - if (table (TABLE_LOADAVG, &tbl, NULL)) - glibtop_error_io_r (server, "table(TABLE_LOADAVG)"); - - buf->flags = _glibtop_sysdeps_loadavg; - - buf->loadavg [0] = tbl.loadavg.loadavg [0]; - buf->loadavg [1] = tbl.loadavg.loadavg [1]; - buf->loadavg [2] = tbl.loadavg.loadavg [2]; - - buf->nr_running = tbl.loadavg.nr_running; - buf->nr_tasks = tbl.loadavg.nr_tasks; - buf->last_pid = tbl.loadavg.last_pid; -} diff --git a/sysdeps/kernel/mem.c b/sysdeps/kernel/mem.c deleted file mode 100644 index 6e7e74d6..00000000 --- a/sysdeps/kernel/mem.c +++ /dev/null @@ -1,68 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static const unsigned long _glibtop_sysdeps_mem = -(1 << GLIBTOP_MEM_TOTAL) + (1 << GLIBTOP_MEM_USED) + -(1 << GLIBTOP_MEM_FREE) + (1 << GLIBTOP_MEM_SHARED) + -(1 << GLIBTOP_MEM_BUFFER) + (1 << GLIBTOP_MEM_CACHED) + -(1 << GLIBTOP_MEM_USER); - -/* Init function. */ - -void -glibtop_init_mem_s (glibtop *server) -{ - server->sysdeps.mem = _glibtop_sysdeps_mem; -} - -/* Provides information about memory usage. */ - -void -glibtop_get_mem_s (glibtop *server, glibtop_mem *buf) -{ - union table tbl; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_MEM, 0); - - memset (buf, 0, sizeof (glibtop_mem)); - - if (table (TABLE_MEM, &tbl, NULL)) - glibtop_error_io_r (server, "table(TABLE_MEM)"); - - buf->flags = _glibtop_sysdeps_mem; - - buf->total = tbl.mem.total; - buf->used = tbl.mem.used; - buf->free = tbl.mem.free; - buf->shared = tbl.mem.shared; - buf->buffer = tbl.mem.buffer; - buf->cached = tbl.mem.cached; - - buf->user = buf->total - buf->free - buf->shared - buf->buffer; -} diff --git a/sysdeps/kernel/msg_limits.c b/sysdeps/kernel/msg_limits.c deleted file mode 100644 index 2ebd1b05..00000000 --- a/sysdeps/kernel/msg_limits.c +++ /dev/null @@ -1,65 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include - -#include -#include - -static const unsigned long _glibtop_sysdeps_msg_limits = -(1 << GLIBTOP_IPC_MSGPOOL) + (1 << GLIBTOP_IPC_MSGMAP) + -(1 << GLIBTOP_IPC_MSGMAX) + (1 << GLIBTOP_IPC_MSGMNB) + -(1 << GLIBTOP_IPC_MSGMNI) + (1 << GLIBTOP_IPC_MSGSSZ) + -(1 << GLIBTOP_IPC_MSGTQL); - -/* Init function. */ - -void -glibtop_init_msg_limits_s (glibtop *server) -{ - server->sysdeps.msg_limits = _glibtop_sysdeps_msg_limits; -} - -/* Provides information about sysv ipc limits. */ - -void -glibtop_get_msg_limits_s (glibtop *server, glibtop_msg_limits *buf) -{ - struct msginfo msginfo; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_MSG_LIMITS, 0); - - memset (buf, 0, sizeof (glibtop_msg_limits)); - - buf->flags = _glibtop_sysdeps_msg_limits; - - msgctl (0, IPC_INFO, (struct msqid_ds *) &msginfo); - - buf->msgpool = msginfo.msgpool; - buf->msgmap = msginfo.msgmap; - buf->msgmax = msginfo.msgmax; - buf->msgmnb = msginfo.msgmnb; - buf->msgmni = msginfo.msgmni; - buf->msgssz = msginfo.msgssz; - buf->msgtql = msginfo.msgtql; -} diff --git a/sysdeps/kernel/netload.c b/sysdeps/kernel/netload.c deleted file mode 100644 index beebedba..00000000 --- a/sysdeps/kernel/netload.c +++ /dev/null @@ -1,45 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , October 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -static const unsigned long _glibtop_sysdeps_netload = 0; - -/* Init function. */ - -void -glibtop_init_netload_s (glibtop *server) -{ - server->sysdeps.netload = _glibtop_sysdeps_netload; -} - -/* Provides network statistics. */ - -void -glibtop_get_netload_s (glibtop *server, glibtop_netload *buf, - const char *interface) -{ - memset (buf, 0, sizeof (glibtop_netload)); -} diff --git a/sysdeps/kernel/open.c b/sysdeps/kernel/open.c deleted file mode 100644 index bd4bf34b..00000000 --- a/sysdeps/kernel/open.c +++ /dev/null @@ -1,63 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include - -/* ===================================================== - * Linux kernel version information for procps utilities - * Copyright (c) 1996 Charles Blake - */ -#include - -#define LINUX_VERSION(x,y,z) (0x10000*(x) + 0x100*(y) + z) - -static int linux_version_code = 0; - -static void set_linux_version(void) { - static struct utsname uts; - int x = 0, y = 0, z = 0; /* cleared in case sscanf() < 3 */ - - if (linux_version_code) return; - if (uname(&uts) == -1) /* failure most likely implies impending death */ - exit(1); - if (sscanf(uts.release, "%d.%d.%d", &x, &y, &z) < 3) - fprintf(stderr, /* *very* unlikely to happen by accident */ - "Non-standard uts for running kernel:\n" - "release %s=%d.%d.%d gives version code %d\n", - uts.release, x, y, z, LINUX_VERSION(x,y,z)); - linux_version_code = LINUX_VERSION(x, y, z); -} - -/* ======================================================= */ - -/* Opens pipe to gtop server. Returns 0 on success and -1 on error. */ - -void -glibtop_open_s (glibtop *server, const char *program_name, - const unsigned long features, const unsigned flags) -{ - server->name = program_name; - - set_linux_version (); - server->os_version_code = (unsigned long) linux_version_code; -} diff --git a/sysdeps/kernel/ppp.c b/sysdeps/kernel/ppp.c deleted file mode 100644 index 6d0905d5..00000000 --- a/sysdeps/kernel/ppp.c +++ /dev/null @@ -1,44 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , October 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -static const unsigned long _glibtop_sysdeps_ppp = 0; - -/* Init function. */ - -void -glibtop_init_ppp_s (glibtop *server) -{ - server->sysdeps.ppp = _glibtop_sysdeps_ppp; -} - -/* Provides PPP/ISDN information. */ - -void -glibtop_get_ppp_s (glibtop *server, glibtop_ppp *buf, unsigned short device) -{ - memset (buf, 0, sizeof (glibtop_ppp)); -} diff --git a/sysdeps/kernel/procargs.c b/sysdeps/kernel/procargs.c deleted file mode 100644 index 7bf1b682..00000000 --- a/sysdeps/kernel/procargs.c +++ /dev/null @@ -1,47 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include -#include - -static const unsigned long _glibtop_sysdeps_proc_args = 0; - -/* Init function. */ - -void -glibtop_init_proc_args_s (glibtop *server) -{ - server->sysdeps.proc_args = _glibtop_sysdeps_proc_args; -} - -/* Provides detailed information about a process. */ - -const char * -glibtop_get_proc_args_s (glibtop *server, glibtop_proc_args *buf, - pid_t pid, unsigned max_len) -{ - memset (buf, 0, sizeof (glibtop_proc_args)); - return NULL; -} diff --git a/sysdeps/kernel/procdata.c b/sysdeps/kernel/procdata.c deleted file mode 100644 index 64fa1583..00000000 --- a/sysdeps/kernel/procdata.c +++ /dev/null @@ -1,180 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include - -#include - -#define LINUX_VERSION(x,y,z) (0x10000*(x) + 0x100*(y) + z) - -#define BIT_SHIFT(x) (1 << (x % 32)) - -static const unsigned long _glibtop_sysdeps_procdata_0 = -BIT_SHIFT(GLIBTOP_PROCDATA_CMD) + -BIT_SHIFT(GLIBTOP_PROCDATA_STATE) + -BIT_SHIFT(GLIBTOP_PROCDATA_UID) + -BIT_SHIFT(GLIBTOP_PROCDATA_PID) + -BIT_SHIFT(GLIBTOP_PROCDATA_PPID) + -BIT_SHIFT(GLIBTOP_PROCDATA_PGRP) + -BIT_SHIFT(GLIBTOP_PROCDATA_SESSION) + -BIT_SHIFT(GLIBTOP_PROCDATA_TTY) + -BIT_SHIFT(GLIBTOP_PROCDATA_TPGID) + -BIT_SHIFT(GLIBTOP_PROCDATA_PRIORITY) + -BIT_SHIFT(GLIBTOP_PROCDATA_NICE) + -BIT_SHIFT(GLIBTOP_PROCDATA_SIGNAL) + -BIT_SHIFT(GLIBTOP_PROCDATA_BLOCKED) + -BIT_SHIFT(GLIBTOP_PROCDATA_SIGIGNORE) + -BIT_SHIFT(GLIBTOP_PROCDATA_SIGCATCH) + -BIT_SHIFT(GLIBTOP_PROCDATA_START_TIME) + -BIT_SHIFT(GLIBTOP_PROCDATA_UTIME) + -BIT_SHIFT(GLIBTOP_PROCDATA_STIME) + -BIT_SHIFT(GLIBTOP_PROCDATA_CUTIME) + -BIT_SHIFT(GLIBTOP_PROCDATA_CSTIME) + -BIT_SHIFT(GLIBTOP_PROCDATA_SIZE) + -BIT_SHIFT(GLIBTOP_PROCDATA_RESIDENT) + -BIT_SHIFT(GLIBTOP_PROCDATA_SHARE) + -BIT_SHIFT(GLIBTOP_PROCDATA_TRS) + -BIT_SHIFT(GLIBTOP_PROCDATA_LRS) + -BIT_SHIFT(GLIBTOP_PROCDATA_DRS) + -BIT_SHIFT(GLIBTOP_PROCDATA_DT) + -BIT_SHIFT(GLIBTOP_PROCDATA_VSIZE) + -BIT_SHIFT(GLIBTOP_PROCDATA_RSS) + -BIT_SHIFT(GLIBTOP_PROCDATA_RSS_RLIM) + -BIT_SHIFT(GLIBTOP_PROCDATA_TIMEOUT) + -BIT_SHIFT(GLIBTOP_PROCDATA_IT_REAL_VALUE); - -static const unsigned long _glibtop_sysdeps_procdata_1 = -BIT_SHIFT(GLIBTOP_PROCDATA_K_FLAGS) + -BIT_SHIFT(GLIBTOP_PROCDATA_MIN_FLT) + -BIT_SHIFT(GLIBTOP_PROCDATA_MAJ_FLT) + -BIT_SHIFT(GLIBTOP_PROCDATA_CMIN_FLT) + -BIT_SHIFT(GLIBTOP_PROCDATA_CMAJ_FLT) + -BIT_SHIFT(GLIBTOP_PROCDATA_START_CODE) + -BIT_SHIFT(GLIBTOP_PROCDATA_END_CODE) + -BIT_SHIFT(GLIBTOP_PROCDATA_START_STACK) + -BIT_SHIFT(GLIBTOP_PROCDATA_KSTK_ESP) + -BIT_SHIFT(GLIBTOP_PROCDATA_KSTK_EIP) + -BIT_SHIFT(GLIBTOP_PROCDATA_WCHAN); - -/* Provides detailed information about a process. */ - -void -glibtop_get_procdata_s (glibtop *server, glibtop_procdata *buf, pid_t pid) -{ - char input [BUFSIZ], *tmp; - struct stat statb; - int nread; - FILE *f; - - glibtop_init_s (&server, 0, 0); - - memset (buf, 0, sizeof (glibtop_procdata)); - - if (pid == 0) { - /* Client is only interested in the flags. */ - buf->flags [0] = _glibtop_sysdeps_procdata_0; - buf->flags [1] = _glibtop_sysdeps_procdata_1; - return; - } - - - sprintf (input, "/proc/%d/stat", pid); - - if (stat (input, &statb)) return; - - buf->uid = statb.st_uid; - - f = fopen (input, "r"); - if (!f) return; - - nread = fread (input, 1, BUFSIZ, f); - - if (nread < 0) { - fclose (f); - return; - } - - input [nread] = 0; - - /* This is from guile-utils/gtop/proc/readproc.c */ - - /* split into "PID (cmd" and "" */ - tmp = strrchr (input, ')'); - *tmp = '\0'; /* replace trailing ')' with NUL */ - /* parse these two strings separately, skipping the leading "(". */ - memset (buf->cmd, 0, sizeof (buf->cmd)); - sscanf (input, "%d (%39c", &buf->pid, buf->cmd); - sscanf(tmp + 2, /* skip space after ')' too */ - "%c %d %d %d %d %d %lu %lu %lu %lu %lu " - "%ld %ld %ld %ld %d %d %lu %lu %ld %lu " - "%lu %lu %lu %lu %lu %lu %lu %d %d %d %d %lu", - &buf->state, &buf->ppid, &buf->pgrp, &buf->session, - &buf->tty, &buf->tpgid, &buf->k_flags, &buf->min_flt, - &buf->cmin_flt, &buf->maj_flt, &buf->cmaj_flt, - &buf->utime, &buf->stime, &buf->cutime, &buf->cstime, - &buf->priority, &buf->nice, &buf->timeout, - &buf->it_real_value, &buf->start_time, &buf->vsize, - &buf->rss, &buf->rss_rlim, &buf->start_code, - &buf->end_code, &buf->start_stack, &buf->kstk_esp, - &buf->kstk_eip, &buf->signal, &buf->blocked, - &buf->sigignore, &buf->sigcatch, &buf->wchan); - - if (buf->tty == 0) - /* the old notty val, update elsewhere bef. moving to 0 */ - buf->tty = -1; - - if (server->os_version_code < LINUX_VERSION(1,3,39)) { - /* map old meanings to new */ - buf->priority = 2*15 - buf->priority; - buf->nice = 15 - buf->nice; - } - if (server->os_version_code < LINUX_VERSION(1,1,30) && buf->tty != -1) - /* when tty wasn't full devno */ - buf->tty = 4*0x100 + buf->tty; - - fclose (f); - - sprintf (input, "/proc/%d/statm", pid); - - f = fopen (input, "r"); - if (!f) return; - - nread = fread (input, 1, BUFSIZ, f); - - if (nread < 0) { - fclose (f); - return; - } - - input [nread] = 0; - - sscanf (input, "%ld %ld %ld %ld %ld %ld %ld", - &buf->size, &buf->resident, &buf->share, - &buf->trs, &buf->lrs, &buf->drs, &buf->dt); - - fclose (f); - - buf->flags [0] = _glibtop_sysdeps_procdata_0; - buf->flags [1] = _glibtop_sysdeps_procdata_1; -} diff --git a/sysdeps/kernel/prockernel.c b/sysdeps/kernel/prockernel.c deleted file mode 100644 index 4380d681..00000000 --- a/sysdeps/kernel/prockernel.c +++ /dev/null @@ -1,68 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static const unsigned long _glibtop_sysdeps_proc_kernel = -(1 << GLIBTOP_PROC_KERNEL_K_FLAGS) + (1 << GLIBTOP_PROC_KERNEL_MIN_FLT) + -(1 << GLIBTOP_PROC_KERNEL_MAJ_FLT) + (1 << GLIBTOP_PROC_KERNEL_CMIN_FLT) + -(1 << GLIBTOP_PROC_KERNEL_CMAJ_FLT) + (1 << GLIBTOP_PROC_KERNEL_KSTK_ESP) + -(1 << GLIBTOP_PROC_KERNEL_KSTK_EIP) + (1 << GLIBTOP_PROC_KERNEL_NWCHAN); - -/* Init function. */ - -void -glibtop_init_proc_kernel_s (glibtop *server) -{ - server->sysdeps.proc_kernel = _glibtop_sysdeps_proc_kernel; -} - -/* Provides detailed information about a process. */ - -void -glibtop_get_proc_kernel_s (glibtop *server, glibtop_proc_kernel *buf, - pid_t pid) -{ - union table tbl; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_KERNEL, 0); - - memset (buf, 0, sizeof (glibtop_proc_kernel)); - - if (table (TABLE_PROC_KERNEL, &tbl, &pid)) - glibtop_error_io_r (server, "table(TABLE_PROC_KERNEL)"); - - buf->flags = _glibtop_sysdeps_proc_kernel; - - buf->min_flt = tbl.proc_kernel.min_flt; - buf->cmin_flt = tbl.proc_kernel.cmin_flt; - buf->maj_flt = tbl.proc_kernel.maj_flt; - buf->cmaj_flt = tbl.proc_kernel.cmaj_flt; - buf->kstk_esp = tbl.proc_kernel.kesp; - buf->kstk_eip = tbl.proc_kernel.keip; - buf->nwchan = tbl.proc_kernel.wchan; -} diff --git a/sysdeps/kernel/proclist.c b/sysdeps/kernel/proclist.c deleted file mode 100644 index 9b527aaf..00000000 --- a/sysdeps/kernel/proclist.c +++ /dev/null @@ -1,86 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static const unsigned long _glibtop_sysdeps_proclist = -(1 << GLIBTOP_PROCLIST_TOTAL) + (1 << GLIBTOP_PROCLIST_NUMBER) + -(1 << GLIBTOP_PROCLIST_SIZE); - -/* Init function. */ - -void -glibtop_init_proclist_s (glibtop *server) -{ - server->sysdeps.proclist = _glibtop_sysdeps_proclist; -} - -#define BLOCK_COUNT 256 -#define BLOCK_SIZE (BLOCK_COUNT * sizeof (unsigned)) - -/* Fetch list of currently running processes. - * - * The interface of this function is a little bit different from the others: - * buf->flags is only set if the call succeeded, in this case pids_chain, - * a list of the pids of all currently running processes is returned, - * buf->number is the number of elements of this list and buf->size is - * the size of one single element (sizeof (unsigned)). The total size is - * stored in buf->total. - * - * The calling function has to free the memory to which a pointer is returned. - * - * On error, NULL is returned and buf->flags is zero. */ - -unsigned * -glibtop_get_proclist_s (glibtop *server, glibtop_proclist *buf, - int64_t which, int64_t arg) -{ - union table tbl; - unsigned *pids_chain; - struct proclist_args args; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROCLIST, 0); - - memset (buf, 0, sizeof (glibtop_proclist)); - - args.which = which; - args.arg = arg; - - if (table (TABLE_PROCLIST, &tbl, &args)) - glibtop_error_io_r (server, "table(TABLE_PROCLIST)"); - - buf->size = sizeof (unsigned); - buf->number = tbl.proclist.nr_tasks; - - buf->total = buf->number * sizeof (unsigned); - - pids_chain = glibtop_malloc_r (server, buf->total); - - memcpy (pids_chain, tbl.proclist.pids, buf->total); - - return pids_chain; -} diff --git a/sysdeps/kernel/procmap.c b/sysdeps/kernel/procmap.c deleted file mode 100644 index 48a99400..00000000 --- a/sysdeps/kernel/procmap.c +++ /dev/null @@ -1,49 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include -#include - -static const unsigned long _glibtop_sysdeps_proc_map = 0; - -/* Init function. */ - -void -glibtop_init_proc_map_s (glibtop *server) -{ - server->sysdeps.proc_map = _glibtop_sysdeps_proc_map; -} - -/* Provides detailed information about a process. */ - -glibtop_map_entry * -glibtop_get_proc_map_s (glibtop *server, glibtop_proc_map *buf, pid_t pid) -{ - glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_MAP, 0); - - memset (buf, 0, sizeof (glibtop_proc_map)); - - return NULL; -} diff --git a/sysdeps/kernel/procmem.c b/sysdeps/kernel/procmem.c deleted file mode 100644 index de65f654..00000000 --- a/sysdeps/kernel/procmem.c +++ /dev/null @@ -1,70 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static const unsigned long _glibtop_sysdeps_proc_mem = -(1 << GLIBTOP_PROC_MEM_SIZE) + (1 << GLIBTOP_PROC_MEM_VSIZE) + -(1 << GLIBTOP_PROC_MEM_RESIDENT) + (1 << GLIBTOP_PROC_MEM_SHARE) + -(1 << GLIBTOP_PROC_MEM_RSS) + (1 << GLIBTOP_PROC_MEM_RSS_RLIM); - -/* Init function. */ - -void -glibtop_init_proc_mem_s (glibtop *server) -{ - server->sysdeps.proc_mem = _glibtop_sysdeps_proc_mem; -} - -/* Provides detailed information about a process. */ - -void -glibtop_get_proc_mem_s (glibtop *server, glibtop_proc_mem *buf, - pid_t pid) -{ - union table tbl; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_MEM, 0); - - memset (buf, 0, sizeof (glibtop_proc_mem)); - - if (table (TABLE_PROC_MEM, &tbl, &pid)) - glibtop_error_io_r (server, "table(TABLE_PROC_MEM)"); - - buf->rss = tbl.proc_mem.rss; - buf->rss_rlim = tbl.proc_mem.rlim; - - if (table (TABLE_PROC_SEGMENT, &tbl, &pid)) - glibtop_error_io_r (server, "table(TABLE_PROC_SEGMENT)"); - - buf->flags = _glibtop_sysdeps_proc_mem; - - buf->vsize = tbl.proc_segment.vsize; - buf->size = tbl.proc_segment.size; - buf->resident = tbl.proc_segment.resident; - buf->share = tbl.proc_segment.shared; -} diff --git a/sysdeps/kernel/procsegment.c b/sysdeps/kernel/procsegment.c deleted file mode 100644 index 2e6d3930..00000000 --- a/sysdeps/kernel/procsegment.c +++ /dev/null @@ -1,77 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static const unsigned long _glibtop_sysdeps_proc_segment = -(1 << GLIBTOP_PROC_SEGMENT_TEXT_RSS) + -(1 << GLIBTOP_PROC_SEGMENT_SHLIB_RSS) + -(1 << GLIBTOP_PROC_SEGMENT_DATA_RSS) + -(1 << GLIBTOP_PROC_SEGMENT_STACK_RSS) + -(1 << GLIBTOP_PROC_SEGMENT_DIRTY_SIZE) + -(1 << GLIBTOP_PROC_SEGMENT_START_CODE) + -(1 << GLIBTOP_PROC_SEGMENT_END_CODE) + -(1 << GLIBTOP_PROC_SEGMENT_START_STACK); - -/* Init function. */ - -void -glibtop_init_proc_segment_s (glibtop *server) -{ - server->sysdeps.proc_segment = _glibtop_sysdeps_proc_segment; -} - -/* Provides detailed information about a process. */ - -void -glibtop_get_proc_segment_s (glibtop *server, glibtop_proc_segment *buf, - pid_t pid) -{ - union table tbl; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_SEGMENT, 0); - - memset (buf, 0, sizeof (glibtop_proc_segment)); - - if (table (TABLE_PROC_MEM, &tbl, &pid)) - glibtop_error_io_r (server, "table(TABLE_PROC_MEM)"); - - buf->start_code = tbl.proc_mem.start_code; - buf->end_code = tbl.proc_mem.end_code; - buf->start_stack = tbl.proc_mem.start_stack; - - if (table (TABLE_PROC_SEGMENT, &tbl, &pid)) - glibtop_error_io_r (server, "table(TABLE_PROC_SEGMENT)"); - - buf->flags = _glibtop_sysdeps_proc_segment; - - buf->text_rss = tbl.proc_segment.trs; - buf->shlib_rss = tbl.proc_segment.lrs; - buf->data_rss = tbl.proc_segment.drs; - buf->stack_rss = tbl.proc_segment.srs; - buf->dirty_size = tbl.proc_segment.dt; -} diff --git a/sysdeps/kernel/procsignal.c b/sysdeps/kernel/procsignal.c deleted file mode 100644 index 3e3829c2..00000000 --- a/sysdeps/kernel/procsignal.c +++ /dev/null @@ -1,63 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static const unsigned long _glibtop_sysdeps_proc_signal = -(1 << GLIBTOP_PROC_SIGNAL_SIGNAL) + (1 << GLIBTOP_PROC_SIGNAL_BLOCKED) + -(1 << GLIBTOP_PROC_SIGNAL_SIGIGNORE) + (1 << GLIBTOP_PROC_SIGNAL_SIGCATCH); - -/* Init function. */ - -void -glibtop_init_proc_signal_s (glibtop *server) -{ - server->sysdeps.proc_signal = _glibtop_sysdeps_proc_signal; -} - -/* Provides detailed information about a process. */ - -void -glibtop_get_proc_signal_s (glibtop *server, glibtop_proc_signal *buf, - pid_t pid) -{ - union table tbl; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_SIGNAL, 0); - - memset (buf, 0, sizeof (glibtop_proc_signal)); - - if (table (TABLE_PROC_SIGNAL, &tbl, &pid)) - glibtop_error_io_r (server, "table(TABLE_PROC_SIGNAL)"); - - buf->flags = _glibtop_sysdeps_proc_signal; - - buf->signal [0] = tbl.proc_signal.signal; - buf->blocked [0] = tbl.proc_signal.blocked; - buf->sigignore [0] = tbl.proc_signal.ignored; - buf->sigcatch [0] = tbl.proc_signal.caught; -} diff --git a/sysdeps/kernel/procstate.c b/sysdeps/kernel/procstate.c deleted file mode 100644 index 59217a5e..00000000 --- a/sysdeps/kernel/procstate.c +++ /dev/null @@ -1,75 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static const unsigned long _glibtop_sysdeps_proc_state = -(1 << GLIBTOP_PROC_STATE_CMD) + (1 << GLIBTOP_PROC_STATE_STATE) + -(1 << GLIBTOP_PROC_STATE_UID) + (1 << GLIBTOP_PROC_STATE_GID); - -/* Init function. */ - -void -glibtop_init_proc_state_s (glibtop *server) -{ - server->sysdeps.proc_state = _glibtop_sysdeps_proc_state; -} - -/* Provides detailed information about a process. */ - -#define NR_STATES 7 - -void -glibtop_get_proc_state_s (glibtop *server, glibtop_proc_state *buf, - pid_t pid) -{ - union table tbl; - static const char states [NR_STATES] = - { 'R', 'S', 'D', 'Z', 'T', 'W', '.' }; - unsigned state; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_STATE, 0); - - memset (buf, 0, sizeof (glibtop_proc_state)); - - if (table (TABLE_PROC_STATE, &tbl, &pid)) - glibtop_error_io_r (server, "table(TABLE_PROC_STATE)"); - - buf->flags = _glibtop_sysdeps_proc_state; - - memcpy (buf->cmd, tbl.proc_state.comm, sizeof (tbl.proc_state.comm)); - - buf->uid = tbl.proc_state.uid; - buf->gid = tbl.proc_state.state; - - state = (unsigned) tbl.proc_state.state; - - if (state >= NR_STATES) - state = NR_STATES; - - buf->state = states [state]; -} diff --git a/sysdeps/kernel/proctime.c b/sysdeps/kernel/proctime.c deleted file mode 100644 index 5e5f455a..00000000 --- a/sysdeps/kernel/proctime.c +++ /dev/null @@ -1,73 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static const unsigned long _glibtop_sysdeps_proc_time = -(1 << GLIBTOP_PROC_TIME_UTIME) + (1 << GLIBTOP_PROC_TIME_CUTIME) + -(1 << GLIBTOP_PROC_TIME_STIME) + (1 << GLIBTOP_PROC_TIME_CSTIME) + -(1 << GLIBTOP_PROC_TIME_RTIME) + (1 << GLIBTOP_PROC_TIME_FREQUENCY) + -(1 << GLIBTOP_PROC_TIME_TIMEOUT) + (1 << GLIBTOP_PROC_TIME_IT_REAL_VALUE) + -(1 << GLIBTOP_PROC_TIME_START_TIME); - -/* Init function. */ - -void -glibtop_init_proc_time_s (glibtop *server) -{ - server->sysdeps.proc_time = _glibtop_sysdeps_proc_time; -} - -/* Provides detailed information about a process. */ - -void -glibtop_get_proc_time_s (glibtop *server, glibtop_proc_time *buf, - pid_t pid) -{ - union table tbl; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_TIME, 0); - - memset (buf, 0, sizeof (glibtop_proc_time)); - - if (table (TABLE_PROC_TIME, &tbl, &pid)) - glibtop_error_io_r (server, "table(TABLE_PROC_TIME)"); - - buf->utime = tbl.proc_time.utime; - buf->stime = tbl.proc_time.stime; - - buf->rtime = buf->utime + buf->stime; - - buf->cutime = tbl.proc_time.cutime; - buf->cstime = tbl.proc_time.cstime; - - buf->frequency = 100; - - buf->timeout = tbl.proc_time.timeout; - buf->it_real_value = tbl.proc_time.it_real_value; - buf->start_time = tbl.proc_time.start_time; -} diff --git a/sysdeps/kernel/procuid.c b/sysdeps/kernel/procuid.c deleted file mode 100644 index 25012916..00000000 --- a/sysdeps/kernel/procuid.c +++ /dev/null @@ -1,105 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static const unsigned long _glibtop_sysdeps_proc_uid = -(1 << GLIBTOP_PROC_UID_UID) + (1 << GLIBTOP_PROC_UID_EUID) + -(1 << GLIBTOP_PROC_UID_GID) + (1 << GLIBTOP_PROC_UID_EGID) + -(1 << GLIBTOP_PROC_UID_PID) + (1 << GLIBTOP_PROC_UID_PPID) + -(1 << GLIBTOP_PROC_UID_PGRP) + (1 << GLIBTOP_PROC_UID_SESSION) + -(1 << GLIBTOP_PROC_UID_TTY) + (1 << GLIBTOP_PROC_UID_TPGID) + -(1 << GLIBTOP_PROC_UID_PRIORITY) + (1 << GLIBTOP_PROC_UID_NICE); - -/* Init function. */ - -void -glibtop_init_proc_uid_s (glibtop *server) -{ - server->sysdeps.proc_uid = _glibtop_sysdeps_proc_uid; -} - -#define LINUX_VERSION(x,y,z) (0x10000*(x) + 0x100*(y) + z) - -/* Provides detailed information about a process. */ - -void -glibtop_get_proc_uid_s (glibtop *server, glibtop_proc_uid *buf, - pid_t pid) -{ - union table tbl; - long def_priority, priority, nice; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_PROC_UID, 0); - - memset (buf, 0, sizeof (glibtop_proc_uid)); - - if (table (TABLE_PROC_UID, &tbl, &pid)) - glibtop_error_io_r (server, "table(TABLE_PROC_UID)"); - - buf->flags = _glibtop_sysdeps_proc_uid; - - buf->uid = tbl.proc_uid.uid; - buf->euid = tbl.proc_uid.euid; - buf->gid = tbl.proc_uid.gid; - buf->egid = tbl.proc_uid.egid; - - buf->pid = tbl.proc_uid.pid; - buf->ppid = tbl.proc_uid.ppid; - buf->pgrp = tbl.proc_uid.pgrp; - buf->session = tbl.proc_uid.session; - buf->tty = tbl.proc_uid.tty; - buf->tpgid = tbl.proc_uid.tpgid; - - /* scale priority and nice values from timeslices to -20..20 */ - /* to make it look like a "normal" unix priority/nice value */ - - def_priority = tbl.proc_uid.def_priority; - - priority = tbl.proc_uid.counter; - priority = 20 - (priority * 10 + def_priority / 2) / def_priority; - nice = tbl.proc_uid.priority; - nice = 20 - (nice * 20 + def_priority / 2) / def_priority; - - buf->priority = (int) priority; - buf->nice = (int) nice; - - if (buf->tty == 0) - /* the old notty val, update elsewhere bef. moving to 0 */ - buf->tty = -1; - - if (server->os_version_code < LINUX_VERSION(1,3,39)) { - /* map old meanings to new */ - buf->priority = 2*15 - buf->priority; - buf->nice = 15 - buf->nice; - } - if (server->os_version_code < LINUX_VERSION(1,1,30) && buf->tty != -1) - /* when tty wasn't full devno */ - buf->tty = 4*0x100 + buf->tty; - - buf->flags = _glibtop_sysdeps_proc_uid; -} diff --git a/sysdeps/kernel/sem_limits.c b/sysdeps/kernel/sem_limits.c deleted file mode 100644 index bdb566d4..00000000 --- a/sysdeps/kernel/sem_limits.c +++ /dev/null @@ -1,86 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include - -#include -#include - -#ifdef _SEM_SEMUN_UNDEFINED - -/* glibc 2.1 will no longer defines semun, instead it defines - * _SEM_SEMUN_UNDEFINED so users can define semun on their own. - * Thanks to Albert K T Hui . */ - -union semun -{ - int val; - struct semid_ds *buf; - unsigned short int *array; - struct seminfo *__buf; -}; -#endif - -static unsigned long _glibtop_sysdeps_sem_limits = -(1 << GLIBTOP_IPC_SEMMAP) + (1 << GLIBTOP_IPC_SEMMNI) + -(1 << GLIBTOP_IPC_SEMMNS) + (1 << GLIBTOP_IPC_SEMMNU) + -(1 << GLIBTOP_IPC_SEMMSL) + (1 << GLIBTOP_IPC_SEMOPM) + -(1 << GLIBTOP_IPC_SEMUME) + (1 << GLIBTOP_IPC_SEMUSZ) + -(1 << GLIBTOP_IPC_SEMVMX) + (1 << GLIBTOP_IPC_SEMAEM); - -/* Init function. */ - -void -glibtop_init_sem_limits_s (glibtop *server) -{ - server->sysdeps.sem_limits = _glibtop_sysdeps_sem_limits; -} - -/* Provides information about sysv ipc limits. */ - -void -glibtop_get_sem_limits_s (glibtop *server, glibtop_sem_limits *buf) -{ - struct seminfo seminfo; - union semun arg; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_SEM_LIMITS, 0); - - memset (buf, 0, sizeof (glibtop_sem_limits)); - - buf->flags = _glibtop_sysdeps_sem_limits; - - arg.array = (ushort *) &seminfo; - semctl (0, 0, IPC_INFO, arg); - - buf->semmap = seminfo.semmap; - buf->semmni = seminfo.semmni; - buf->semmns = seminfo.semmns; - buf->semmnu = seminfo.semmnu; - buf->semmsl = seminfo.semmsl; - buf->semopm = seminfo.semopm; - buf->semume = seminfo.semume; - buf->semusz = seminfo.semusz; - buf->semvmx = seminfo.semvmx; - buf->semaem = seminfo.semaem; -} diff --git a/sysdeps/kernel/shm_limits.c b/sysdeps/kernel/shm_limits.c deleted file mode 100644 index da6ec92d..00000000 --- a/sysdeps/kernel/shm_limits.c +++ /dev/null @@ -1,62 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include - -#include -#include - -static unsigned long _glibtop_sysdeps_shm_limits = -(1 << GLIBTOP_IPC_SHMMAX) + (1 << GLIBTOP_IPC_SHMMIN) + -(1 << GLIBTOP_IPC_SHMMNI) + (1 << GLIBTOP_IPC_SHMSEG) + -(1 << GLIBTOP_IPC_SHMALL); - -/* Init function. */ - -void -glibtop_init_shm_limits_s (glibtop *server) -{ - server->sysdeps.shm_limits = _glibtop_sysdeps_shm_limits; -} - -/* Provides information about sysv ipc limits. */ - -void -glibtop_get_shm_limits_s (glibtop *server, glibtop_shm_limits *buf) -{ - struct shminfo shminfo; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_SHM_LIMITS, 0); - - memset (buf, 0, sizeof (glibtop_shm_limits)); - - buf->flags = _glibtop_sysdeps_shm_limits; - - shmctl (0, IPC_INFO, (struct shmid_ds *) &shminfo); - - buf->shmmax = shminfo.shmmax; - buf->shmmin = shminfo.shmmin; - buf->shmmni = shminfo.shmmni; - buf->shmseg = shminfo.shmseg; - buf->shmall = shminfo.shmall; -} diff --git a/sysdeps/kernel/siglist.c b/sysdeps/kernel/siglist.c deleted file mode 100644 index d00223c0..00000000 --- a/sysdeps/kernel/siglist.c +++ /dev/null @@ -1,60 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include - -const glibtop_signame glibtop_sys_siglist [] = -{ { 1, "SIGHUP", NULL }, /* Hangup (POSIX). */ - { 2, "SIGINT", NULL }, /* Interrupt (ANSI). */ - { 3, "SIGQUIT", NULL }, /* Quit (POSIX). */ - { 4, "SIGILL", NULL }, /* Illegal instruction (ANSI). */ - { 5, "SIGTRAP", NULL }, /* Trace trap (POSIX). */ - { 6, "SIGABRT", NULL }, /* Abort (ANSI). */ - { 7, "SIGBUS", NULL }, /* BUS error (4.2 BSD). */ - { 8, "SIGFPE", NULL }, /* Floating-point exception (ANSI). */ - { 9, "SIGKILL", NULL }, /* Kill, unblockable (POSIX). */ - { 10, "SIGUSR1", NULL }, /* User-defined signal 1 (POSIX). */ - { 11, "SIGSEGV", NULL }, /* Segmentation violation (ANSI). */ - { 12, "SIGUSR2", NULL }, /* User-defined signal 2 (POSIX). */ - { 13, "SIGPIPE", NULL }, /* Broken pipe (POSIX). */ - { 14, "SIGALRM", NULL }, /* Alarm clock (POSIX). */ - { 15, "SIGTERM", NULL }, /* Termination (ANSI). */ - { 16, "SIGSTKFLT", NULL }, /* ??? */ - { 17, "SIGCHLD", NULL }, /* Child status has changed (POSIX). */ - { 18, "SIGCONT", NULL }, /* Continue (POSIX). */ - { 19, "SIGSTOP", NULL }, /* Stop, unblockable (POSIX). */ - { 20, "SIGTSTP", NULL }, /* Keyboard stop (POSIX). */ - { 21, "SIGTTIN", NULL }, /* Background read from tty (POSIX). */ - { 22, "SIGTTOU", NULL }, /* Background write to tty (POSIX). */ - { 23, "SIGURG", NULL }, /* Urgent condition on socket (4.2 BSD). */ - { 24, "SIGXCPU", NULL }, /* CPU limit exceeded (4.2 BSD). */ - { 25, "SIGXFSZ", NULL }, /* File size limit exceeded (4.2 BSD). */ - { 26, "SIGVTALRM", NULL }, /* Virtual alarm clock (4.2 BSD). */ - { 27, "SIGPROF", NULL }, /* Profiling alarm clock (4.2 BSD). */ - { 28, "SIGWINCH", NULL }, /* Window size change (4.3 BSD, Sun). */ - { 29, "SIGIO", NULL }, /* I/O now possible (4.2 BSD). */ - { 30, "SIGPWR", NULL }, /* Power failure restart (System V). */ - { 31, "SIGUNUSED", NULL }, - { 0, NULL, NULL }, -}; diff --git a/sysdeps/kernel/swap.c b/sysdeps/kernel/swap.c deleted file mode 100644 index 81f13aa0..00000000 --- a/sysdeps/kernel/swap.c +++ /dev/null @@ -1,65 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static unsigned long _glibtop_sysdeps_swap = -(1 << GLIBTOP_SWAP_TOTAL) + (1 << GLIBTOP_SWAP_USED) + -(1 << GLIBTOP_SWAP_FREE) + (1 << GLIBTOP_SWAP_PAGEIN) + -(1 << GLIBTOP_SWAP_PAGEOUT); - -/* Init function. */ - -void -glibtop_init_swap_s (glibtop *server) -{ - server->sysdeps.swap = _glibtop_sysdeps_swap; -} - -/* Provides information about swap usage. */ - -void -glibtop_get_swap_s (glibtop *server, glibtop_swap *buf) -{ - union table tbl; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_SWAP, 0); - - memset (buf, 0, sizeof (glibtop_swap)); - - if (table (TABLE_SWAP, &tbl, NULL)) - glibtop_error_io_r (server, "table(TABLE_SWAP)"); - - buf->flags = _glibtop_sysdeps_swap; - - buf->total = tbl.swap.total; - buf->used = tbl.swap.used; - buf->free = tbl.swap.free; - - buf->pagein = tbl.swap.pagein; - buf->pageout = tbl.swap.pageout; -} diff --git a/sysdeps/kernel/uptime.c b/sysdeps/kernel/uptime.c deleted file mode 100644 index 844dfb5e..00000000 --- a/sysdeps/kernel/uptime.c +++ /dev/null @@ -1,64 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1998-99 Martin Baulig - This file is part of LibGTop 1.0. - - Contributed by Martin Baulig , April 1998. - - LibGTop is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - LibGTop is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with LibGTop; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -#include -#include -#include - -#include "kernel.h" - -static unsigned long _glibtop_sysdeps_uptime = -(1 << GLIBTOP_UPTIME_UPTIME) + (1 << GLIBTOP_UPTIME_IDLETIME); - -/* Init function. */ - -void -glibtop_init_uptime_s (glibtop *server) -{ - server->sysdeps.uptime = _glibtop_sysdeps_uptime; -} - -/* Provides uptime and idle time. */ - -void -glibtop_get_uptime_s (glibtop *server, glibtop_uptime *buf) -{ - union table tbl; - - glibtop_init_s (&server, GLIBTOP_SYSDEPS_UPTIME, 0); - - memset (buf, 0, sizeof (glibtop_uptime)); - - if (table (TABLE_UPTIME, &tbl, NULL)) - glibtop_error_io_r (server, "table(TABLE_UPTIME)"); - - buf->flags = _glibtop_sysdeps_uptime; - -#if 0 - fprintf (stderr, "Table (%u) = %lu, %lu\n", - TABLE_UPTIME, tbl.uptime.uptime, tbl.uptime.idle); -#endif - - buf->uptime = (double) tbl.uptime.uptime / HZ; - buf->idletime = (double) tbl.uptime.idle / HZ; -}