Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_syscalls.c
Show All 37 Lines | |||||
#include <sys/resourcevar.h> | #include <sys/resourcevar.h> | ||||
#include <sys/sx.h> | #include <sys/sx.h> | ||||
#include <sys/syscall.h> | #include <sys/syscall.h> | ||||
#include <sys/sysent.h> | #include <sys/sysent.h> | ||||
#include <sys/sysproto.h> | #include <sys/sysproto.h> | ||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
#include <machine/atomic.h> | #include <machine/atomic.h> | ||||
int __read_frequently syscall_slow_path_required = 0; | |||||
/* | /* | ||||
* Acts like "nosys" but can be identified in sysent for dynamic call | * Acts like "nosys" but can be identified in sysent for dynamic call | ||||
* number assignment for a limited number of calls. | * number assignment for a limited number of calls. | ||||
* | * | ||||
* Place holder for system call slots reserved for loadable modules. | * Place holder for system call slots reserved for loadable modules. | ||||
*/ | */ | ||||
int | int | ||||
lkmnosys(struct thread *td, struct nosys_args *args) | lkmnosys(struct thread *td, struct nosys_args *args) | ||||
▲ Show 20 Lines • Show All 203 Lines • ▼ Show 20 Lines | kern_syscall_helper_unregister(struct sysent *sysents, | ||||
struct syscall_helper_data *sd1; | struct syscall_helper_data *sd1; | ||||
for (sd1 = sd; sd1->registered != 0; sd1++) { | for (sd1 = sd; sd1->registered != 0; sd1++) { | ||||
kern_syscall_deregister(sysents, sd1->syscall_no, | kern_syscall_deregister(sysents, sd1->syscall_no, | ||||
&sd1->old_sysent); | &sd1->old_sysent); | ||||
sd1->registered = 0; | sd1->registered = 0; | ||||
} | } | ||||
return (0); | return (0); | ||||
} | |||||
void | |||||
syscall_slow_down(int id) | |||||
{ | |||||
atomic_set_int(&syscall_slow_path_required, id); | |||||
} | |||||
void | |||||
syscall_speed_up(int id) | |||||
{ | |||||
atomic_clear_int(&syscall_slow_path_required, id); | |||||
} | } |