#include #include "mhshmkern.h" #define mhshm_diverter_sysnum 253 #define attach_funnum 0 #define create_funnum 1 #define detach_funnum 2 #define getmod_funnum 3 extern int errno; inline long mhshm_diverter (int funnum, long l, void *p) { long ret; /* repris de /usr/include/asm/unistd.h:_syscall3 */ __asm__ volatile ( "int $0x80; " : "=a" (ret) : "0" (mhshm_diverter_sysnum), "b" ((long)funnum), "c" ((long)l), "d" ((long)p) ); if (ret < 0) { errno = -ret; ret = -1; } return ret; } long mhshm_attach (long id, unsigned char **raddr) { return mhshm_diverter (attach_funnum, id, (void *)raddr); } long mhshm_create (long id, unsigned char **raddr) { return mhshm_diverter (create_funnum, id, (void *)raddr); } long mhshm_detach (unsigned char *shmaddr) { return mhshm_diverter (detach_funnum, 0, (void *)shmaddr); } long mhshm_getmod (long id, struct mhshm_kern_mod *ptr) { return mhshm_diverter (getmod_funnum, id, (void *)ptr); }