1*433d6423SLionel Sambuc 2*433d6423SLionel Sambuc #include <stdio.h> 3*433d6423SLionel Sambuc #include <minix/ipc.h> 4*433d6423SLionel Sambuc 5*433d6423SLionel Sambuc /* Minix kernel info, IPC functions pointers */ 6*433d6423SLionel Sambuc struct minix_kerninfo *_minix_kerninfo = NULL; 7*433d6423SLionel Sambuc 8*433d6423SLionel Sambuc void __minix_init(void) __attribute__((__constructor__, __used__)); 9*433d6423SLionel Sambuc 10*433d6423SLionel Sambuc struct minix_ipcvecs _minix_ipcvecs = { 11*433d6423SLionel Sambuc .sendrec = _ipc_sendrec_intr, 12*433d6423SLionel Sambuc .send = _ipc_send_intr, 13*433d6423SLionel Sambuc .notify = _ipc_notify_intr, 14*433d6423SLionel Sambuc .senda = _ipc_senda_intr, 15*433d6423SLionel Sambuc .sendnb = _ipc_sendnb_intr, 16*433d6423SLionel Sambuc .receive = _ipc_receive_intr, 17*433d6423SLionel Sambuc .do_kernel_call = _do_kernel_call_intr, 18*433d6423SLionel Sambuc }; 19*433d6423SLionel Sambuc 20*433d6423SLionel Sambuc void __minix_init(void) 21*433d6423SLionel Sambuc { 22*433d6423SLionel Sambuc if((get_minix_kerninfo(&_minix_kerninfo) != 0) || 23*433d6423SLionel Sambuc (_minix_kerninfo->kerninfo_magic != KERNINFO_MAGIC)) 24*433d6423SLionel Sambuc { 25*433d6423SLionel Sambuc _minix_kerninfo = NULL; 26*433d6423SLionel Sambuc } 27*433d6423SLionel Sambuc else if((_minix_kerninfo->ki_flags & MINIX_KIF_IPCVECS) && 28*433d6423SLionel Sambuc (_minix_kerninfo->minix_ipcvecs != NULL)) 29*433d6423SLionel Sambuc { 30*433d6423SLionel Sambuc _minix_ipcvecs = *_minix_kerninfo->minix_ipcvecs; 31*433d6423SLionel Sambuc } 32*433d6423SLionel Sambuc } 33*433d6423SLionel Sambuc 34