#ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include #include #include #include #include #include #include #include #include #include #include static int proc_info[4] = {0,0,0,0}; static ctl_table ctl_kd_mksound[2] = { {0x19091977, "kd_mksound", &proc_info, 4*sizeof(int), 0444, NULL, &proc_dointvec}, {0} }; static struct ctl_table_header* p; /* FIXME! */ //static void (*kd_mksound)(unsigned int hz, unsigned int ticks) = NULL; static void (*original_kd_mksound)(unsigned int hz, unsigned int ticks); static void my_kd_mksound(unsigned int hz, unsigned int ticks) { ++proc_info[0]; proc_info[1]=current->pid; proc_info[2]=hz; proc_info[3]=ticks; original_kd_mksound(hz,ticks); } static int can_unload() { return (kd_mksound != my_kd_mksound); } static int init_kd_mksound_cmd(void) { if (!mod_member_present(&__this_module, can_unload)) { return -EBUSY; } __this_module.can_unload = can_unload; p=register_sysctl_table(ctl_kd_mksound, 1); if (!p) return -EBUSY; original_kd_mksound=kd_mksound; kd_mksound=my_kd_mksound; return 0; } static void exit_kd_mksound_cmd(void) { unregister_sysctl_table(p); kd_mksound=original_kd_mksound; // kd_mksound=kd_mksound; } module_init(init_kd_mksound_cmd); module_exit(exit_kd_mksound_cmd); /* * Local variables: * c-file-style: "linux" * End: */