/* * @OSF_FREE_FREE_COPYRIGHT@ * */ /* * HISTORY * $Log: parent_server.c,v $ * Revision 1.1.2.1 1996/09/09 17:18:51 barbou * Created. * [1996/09/02 09:41:36 barbou] * * $EndLog$ */ #include <mach/exception.h> #include <osfmach3/parent_server.h> #include <linux/kernel.h> int parent_server_type = PARENT_SERVER_NONE; int parent_server_errno; int errno; void parent_server_set_type(int type) { switch (type) { case PARENT_SERVER_NONE: printk("No parent server: running standalone.\n"); break; case PARENT_SERVER_LINUX: printk("Parent server is Linux.\n"); break; case PARENT_SERVER_OSF1: printk("Parent server is OSF/1.\n"); break; default: printk("Unknown parent server type (%d).\n", type); break; } parent_server_type = type; } extern int parent_linux_getpid(void); extern int parent_osf1_getpid(void); int parent_server_getpid(void) { int ret; switch (parent_server_type) { case PARENT_SERVER_LINUX: ret = parent_linux_getpid(); break; case PARENT_SERVER_OSF1: ret = parent_osf1_getpid(); break; default: ret = -1; break; } parent_server_errno = errno; return ret; } extern void parent_linux_catchall_signals(void); extern void parent_osf1_catchall_signals(void); void parent_server_catchall_signals(void) { switch (parent_server_type) { case PARENT_SERVER_LINUX: parent_linux_catchall_signals(); break; case PARENT_SERVER_OSF1: parent_osf1_catchall_signals(); break; default: break; } parent_server_errno = errno; } extern int parent_linux_write(int fd, char *buf, int count); extern int parent_osf1_write(int fd, char *buf, int count); int parent_server_write( int fd, char *buf, int count) { int ret; switch (parent_server_type) { case PARENT_SERVER_LINUX: ret = parent_linux_write(fd, buf, count); break; case PARENT_SERVER_OSF1: ret = parent_osf1_write(fd, buf, count); break; default: ret = -1; break; } parent_server_errno = errno; return ret; } extern int parent_linux_read(int fd, char *buf, int count); extern int parent_osf1_read(int fd, char *buf, int count); int parent_server_read( int fd, char *buf, int count) { int ret; switch (parent_server_type) { case PARENT_SERVER_LINUX: ret = parent_linux_read(fd, buf, count); break; case PARENT_SERVER_OSF1: ret = parent_osf1_read(fd, buf, count); break; default: ret = -1; break; } parent_server_errno = errno; return ret; } extern int parent_linux_ioctl(int fd, int request, char *data); extern int parent_osf1_ioctl(int fd, int request, char *data); int parent_server_ioctl( int fd, int request, char *data) { int ret; switch (parent_server_type) { case PARENT_SERVER_LINUX: ret = parent_linux_ioctl(fd, request, data); break; case PARENT_SERVER_OSF1: ret = parent_osf1_ioctl(fd, request, data); break; default: ret = -1; break; } parent_server_errno = errno; return ret; } extern int parent_linux_exit(int error_code); extern int parent_osf1_exit(int error_code); int parent_server_exit( int error_code) { int ret; switch (parent_server_type) { case PARENT_SERVER_LINUX: ret = parent_linux_exit(error_code); break; case PARENT_SERVER_OSF1: ret = parent_osf1_exit(error_code); break; default: ret = -1; break; } parent_server_errno = errno; return ret; } extern int parent_linux_grab_console(void); extern int parent_osf1_grab_console(void); int parent_server_grab_console(void) { int ret; switch (parent_server_type) { case PARENT_SERVER_LINUX: ret = parent_linux_grab_console(); break; case PARENT_SERVER_OSF1: ret = parent_osf1_grab_console(); break; default: ret = -1; break; } parent_server_errno = errno; return ret; } extern int parent_linux_release_console(void); extern int parent_osf1_release_console(void); int parent_server_release_console(void) { int ret; switch (parent_server_type) { case PARENT_SERVER_LINUX: ret = parent_linux_release_console(); break; case PARENT_SERVER_OSF1: ret = parent_osf1_release_console(); break; default: ret = -1; break; } parent_server_errno = errno; return ret; } extern exception_mask_t parent_linux_syscall_exc_mask(void); extern exception_mask_t parent_osf1_syscall_exc_mask(void); exception_mask_t parent_server_syscall_exc_mask(void) { exception_mask_t mask; switch (parent_server_type) { case PARENT_SERVER_LINUX: mask = parent_linux_syscall_exc_mask(); break; case PARENT_SERVER_OSF1: mask = parent_osf1_syscall_exc_mask(); break; default: mask = 0; break; } return mask; } extern int parent_linux_get_mach_privilege(void); extern int parent_osf1_get_mach_privilege(void); int parent_server_get_mach_privilege(void) { int ret; switch (parent_server_type) { case PARENT_SERVER_LINUX: ret = parent_linux_get_mach_privilege(); break; case PARENT_SERVER_OSF1: ret = parent_osf1_get_mach_privilege(); break; default: ret = -1; break; } parent_server_errno = errno; return ret; }