static int __init do_linuxrc(void * shell) { static char *argv[] = { "linuxrc", NULL, }; extern char * envp_init[]; sys_close(old_fd);sys_close(root_fd); sys_setsid(); return kernel_execve(shell, argv, envp_init); }
asmlinkage int sunos_setpgrp(pid_t pid, pid_t pgid) { /* So stupid... */ if((!pid || pid == current->pid) && !pgid) { sys_setsid(); return 0; } else { return sys_setpgid(pid, pgid); } }
static int fn(void *d) { struct l4fdx_client *client = d; int err; err = sys_setregid(client->gid, client->gid); err = sys_setreuid(client->uid, client->uid); err = sys_setsid(); if (client->capname) snprintf(current->comm, sizeof(current->comm), "l4xfdx-%s", client->capname); else snprintf(current->comm, sizeof(current->comm), "l4xfdx-%lx", client->cap >> L4_CAP_SHIFT); current->comm[sizeof(current->comm) - 1] = 0; set_user_nice(current, -20); while (!should_stop || !list_empty(&client->req_list)) { struct internal_request *r; wait_event_interruptible(client->event, !list_empty(&client->req_list) || should_stop); r = pop_request(client->srv_obj); switch (r->type) { case L4FS_REQ_OPEN: fn_open(client->srv_obj, r); break; case L4FS_REQ_READ: fn_read(client->srv_obj, r); break; case L4FS_REQ_WRITE: fn_write(client->srv_obj, r); break; case L4FS_REQ_CLOSE: fn_close(client->srv_obj, r); break; case L4FS_REQ_FSTAT64: fn_fstat64(client->srv_obj, r); break; default: pr_err("l4fdx: Invalid type=%d\n", r->type); break; } } return 0; }
/* This is the C kernel entry point */ void kmain(struct multiboot *mboot_header, addr_t initial_stack) { /* Store passed values, and initiate some early things * We want serial log output as early as possible */ kernel_state_flags=0; mtboot = mboot_header; i_stack = initial_stack; parse_kernel_elf(mboot_header, &kernel_elf); #if CONFIG_MODULES init_kernel_symbols(); #endif init_serial(); console_init_stage1(); load_tables(); puts("~ SeaOS Version "); char ver[32]; get_kernel_version(ver); puts(ver); puts(" Booting Up ~\n\r"); #if CONFIG_MODULES init_module_system(); #endif init_syscalls(); load_initrd(mtboot); install_timer(1000); pm_init(placement, mtboot); init_main_cpu_1(); /* Now get the management stuff going */ printk(1, "[kernel]: Starting system management\n"); init_memory(mtboot); init_main_cpu_2(); console_init_stage2(); parse_kernel_cmd((char *)(addr_t)mtboot->cmdline); init_multitasking(); init_cache(); init_dm(); init_vfs(); /* Load the rest... */ process_initrd(); init_kern_task(); get_timed(&kernel_start_time); printk(KERN_MILE, "[kernel]: Kernel is setup (%2.2d:%2.2d:%2.2d, %s, kv=%d, ts=%d bytes: ok)\n", kernel_start_time.tm_hour, kernel_start_time.tm_min, kernel_start_time.tm_sec, kernel_name, KVERSION, sizeof(task_t)); assert(!set_int(1)); if(!fork()) init(); sys_setsid(); enter_system(255); kernel_idle_task(); }
static int __init do_linuxrc(void * shell) { static char *argv[] = { "linuxrc", NULL, }; extern char * envp_init[]; sys_close(old_fd);sys_close(root_fd); sys_close(0);sys_close(1);sys_close(2); sys_setsid(); (void) sys_open((const char __user *)"/dev/console",O_RDWR,0); (void) sys_dup(0); (void) sys_dup(0); return kernel_execve(shell, argv, envp_init); }
/* This is the C kernel entry point */ void kmain(struct multiboot *mboot_header, addr_t initial_stack) { /* Store passed values, and initiate some early things * We want serial log output as early as possible */ kernel_state_flags=0; mtboot = mboot_header; initial_boot_stack = initial_stack; loader_parse_kernel_elf(mboot_header, &kernel_sections); #if CONFIG_MODULES loader_init_kernel_symbols(); #endif serial_init(); cpu_early_init(); #if CONFIG_MODULES loader_init_modules(); #endif syscall_init(); fs_initrd_load(mtboot); cpu_timer_install(1000); cpu_processor_init_1(); /* Now get the management stuff going */ printk(1, "[kernel]: Starting system management\n"); mm_init(mtboot); syslog_init(); parse_kernel_command_line((char *)(addr_t)mtboot->cmdline); tm_init_multitasking(); dm_init(); fs_init(); net_init(); trace_init(); /* Load the rest... */ printk(KERN_MILE, "[kernel]: Kernel is setup (kv=%d, bpl=%d: ok)\n", CONFIG_VERSION_NUMBER, BITS_PER_LONG); printk(KERN_DEBUG, "[kernel]: structure sizes: process=%d bytes, thread=%d bytes, inode=%d bytes\n", sizeof(struct process), sizeof(struct thread), sizeof(struct inode)); cpu_interrupt_set(1); sys_setup(); cpu_processor_init_2(); timer_calibrate(); #if CONFIG_SMP if(boot_cpus) cpu_boot_all_aps(); #endif tm_clone(0, __init_entry, 0); sys_setsid(); kt_kernel_idle_task(); }
int module_install() { printk(1, "[sync]: Kernel service for autosyncronization beginning in 3 seconds\n"); int x = mod_fork(&pid); if(!x) { sys_setsid(); exe=set_as_kernel_task("ksync"); delay(3000); printk(1, "[sync]: Autosync enabled\n"); for(;;) { delay(1000); //kernel_cache_sync_slow(0); } } return 0; }
int cmain () { static const char *cmd[] = { (char *)0, "/etc/kyu/init.sx", "local", (char *)0 }; define_string (str_monitor, "monitor"); sexpr mbinary = sx_false; #if defined(have_sys_setsid) sys_setsid(); #endif mbinary = which (str_monitor); if (falsep(mbinary)) { return 1; } cmd[0] = sx_string (mbinary); multiplex_signal(); multiplex_all_processes(); multiplex_sexpr(); multiplex_add_process ((struct exec_context *)0, global_death_notification, (void *)0); on_init_death((void *)0, cmd); multiplex_add_signal (sig_int, on_sig_int, (void *)0); #ifdef have_sys_close sys_close (0); sys_close (1); #endif prevent_hissyfits (); while (1) multiplex(); /* make sure to not get outta this loop, ever */ return 0; /* this should never be reached... */ }
int ultrix_sys_setpgrp(struct lwp *l, const struct ultrix_sys_setpgrp_args *uap, register_t *retval) { struct proc *p = l->l_proc; struct sys_setpgid_args ap; SCARG(&ap, pid) = SCARG(uap, pid); SCARG(&ap, pgid) = SCARG(uap, pgid); /* * difference to our setpgid call is to include backwards * compatibility to pre-setsid() binaries. Do setsid() * instead of setpgid() in those cases where the process * tries to create a new session the old way. */ if (!SCARG(&ap, pgid) && (!SCARG(&ap, pid) || SCARG(&ap, pid) == p->p_pid)) return sys_setsid(l, &ap, retval); else return sys_setpgid(l, &ap, retval); }
asmlinkage int sunos_ioctl (int fd, u32 cmd, u32 arg) { int ret = -EBADF; if(fd >= SUNOS_NR_OPEN) goto out; if(!fcheck(fd)) goto out; if(cmd == TIOCSETD) { mm_segment_t old_fs = get_fs(); int __user *p; int ntty = N_TTY; int tmp; p = (int __user *) (unsigned long) arg; ret = -EFAULT; if(get_user(tmp, p)) goto out; if(tmp == 2) { set_fs(KERNEL_DS); ret = sys_ioctl(fd, cmd, (unsigned long) &ntty); set_fs(old_fs); ret = (ret == -EINVAL ? -EOPNOTSUPP : ret); goto out; } } if(cmd == TIOCNOTTY) { ret = sys_setsid(); goto out; } switch(cmd) { case _IOW('r', 10, struct rtentry32): ret = compat_sys_ioctl(fd, SIOCADDRT, arg); goto out; case _IOW('r', 11, struct rtentry32): ret = compat_sys_ioctl(fd, SIOCDELRT, arg); goto out; case _IOW('i', 12, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCSIFADDR, arg); goto out; case _IOWR('i', 13, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCGIFADDR, arg); goto out; case _IOW('i', 14, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCSIFDSTADDR, arg); goto out; case _IOWR('i', 15, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCGIFDSTADDR, arg); goto out; case _IOW('i', 16, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCSIFFLAGS, arg); goto out; case _IOWR('i', 17, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCGIFFLAGS, arg); goto out; case _IOW('i', 18, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCSIFMEM, arg); goto out; case _IOWR('i', 19, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCGIFMEM, arg); goto out; case _IOWR('i', 20, struct ifconf32): ret = compat_sys_ioctl(fd, SIOCGIFCONF, arg); goto out; case _IOW('i', 21, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCSIFMTU, arg); goto out; case _IOWR('i', 22, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCGIFMTU, arg); goto out; case _IOWR('i', 23, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCGIFBRDADDR, arg); goto out; case _IOW('i', 24, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCSIFBRDADDR, arg); goto out; case _IOWR('i', 25, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCGIFNETMASK, arg); goto out; case _IOW('i', 26, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCSIFNETMASK, arg); goto out; case _IOWR('i', 27, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCGIFMETRIC, arg); goto out; case _IOW('i', 28, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCSIFMETRIC, arg); goto out; case _IOW('i', 30, struct arpreq): ret = compat_sys_ioctl(fd, SIOCSARP, arg); goto out; case _IOWR('i', 31, struct arpreq): ret = compat_sys_ioctl(fd, SIOCGARP, arg); goto out; case _IOW('i', 32, struct arpreq): ret = compat_sys_ioctl(fd, SIOCDARP, arg); goto out; case _IOW('i', 40, struct ifreq32): /* SIOCUPPER */ case _IOW('i', 41, struct ifreq32): /* SIOCLOWER */ case _IOW('i', 44, struct ifreq32): /* SIOCSETSYNC */ case _IOW('i', 45, struct ifreq32): /* SIOCGETSYNC */ case _IOW('i', 46, struct ifreq32): /* SIOCSSDSTATS */ case _IOW('i', 47, struct ifreq32): /* SIOCSSESTATS */ case _IOW('i', 48, struct ifreq32): /* SIOCSPROMISC */ ret = -EOPNOTSUPP; goto out; case _IOW('i', 49, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCADDMULTI, arg); goto out; case _IOW('i', 50, struct ifreq32): ret = compat_sys_ioctl(fd, SIOCDELMULTI, arg); goto out; /* FDDI interface ioctls, unsupported. */ case _IOW('i', 51, struct ifreq32): /* SIOCFDRESET */ case _IOW('i', 52, struct ifreq32): /* SIOCFDSLEEP */ case _IOW('i', 53, struct ifreq32): /* SIOCSTRTFMWAR */ case _IOW('i', 54, struct ifreq32): /* SIOCLDNSTRTFW */ case _IOW('i', 55, struct ifreq32): /* SIOCGETFDSTAT */ case _IOW('i', 56, struct ifreq32): /* SIOCFDNMIINT */ case _IOW('i', 57, struct ifreq32): /* SIOCFDEXUSER */ case _IOW('i', 58, struct ifreq32): /* SIOCFDGNETMAP */ case _IOW('i', 59, struct ifreq32): /* SIOCFDGIOCTL */ printk("FDDI ioctl, returning EOPNOTSUPP\n"); ret = -EOPNOTSUPP; goto out; case _IOW('t', 125, int): /* More stupid tty sunos ioctls, just * say it worked. */ ret = 0; goto out; /* Non posix grp */ case _IOW('t', 118, int): { int oldval, newval, __user *ptr; cmd = TIOCSPGRP; ptr = (int __user *) (unsigned long) arg; ret = -EFAULT; if(get_user(oldval, ptr)) goto out; ret = compat_sys_ioctl(fd, cmd, arg); __get_user(newval, ptr); if(newval == -1) { __put_user(oldval, ptr); ret = -EIO; } if(ret == -ENOTTY) ret = -EIO; goto out; } case _IOR('t', 119, int): { int oldval, newval, __user *ptr; cmd = TIOCGPGRP; ptr = (int __user *) (unsigned long) arg; ret = -EFAULT; if(get_user(oldval, ptr)) goto out; ret = compat_sys_ioctl(fd, cmd, arg); __get_user(newval, ptr); if(newval == -1) { __put_user(oldval, ptr); ret = -EIO; } if(ret == -ENOTTY) ret = -EIO; goto out; } }; ret = compat_sys_ioctl(fd, cmd, arg); /* so stupid... */ ret = (ret == -EINVAL ? -EOPNOTSUPP : ret); out: return ret; }
asmlinkage int sunos_ioctl (int fd, unsigned long cmd, unsigned long arg) { struct file *filp; int foo; if (fd >= NR_OPEN || !(filp = current->files->fd [fd])) return -EBADF; /* First handle an easy compat. case for tty ldisc. */ if(cmd == TIOCSETD) { int *p, ntty = N_TTY, old_fs; p = (int *) arg; foo = verify_area(VERIFY_WRITE, p, sizeof(int)); if(foo) return foo; if(*p == 2) { old_fs = get_fs(); set_fs(KERNEL_DS); foo = sys_ioctl(fd, cmd, (int) &ntty); set_fs(old_fs); return (foo == -EINVAL ? -EOPNOTSUPP : foo); } } /* Binary compatibility is good American knowhow f****n' up. */ if(cmd == TIOCNOTTY) return sys_setsid(); /* SunOS networking ioctls. */ switch (cmd) { case _IOW('r', 10, struct rtentry): return sys_ioctl(fd, SIOCADDRT, arg); case _IOW('r', 11, struct rtentry): return sys_ioctl(fd, SIOCDELRT, arg); case _IOW('i', 12, struct ifreq): return sys_ioctl(fd, SIOCSIFADDR, arg); case _IORW('i', 13, struct ifreq): return sys_ioctl(fd, SIOCGIFADDR, arg); case _IOW('i', 14, struct ifreq): return sys_ioctl(fd, SIOCSIFDSTADDR, arg); case _IORW('i', 15, struct ifreq): return sys_ioctl(fd, SIOCGIFDSTADDR, arg); case _IOW('i', 16, struct ifreq): return sys_ioctl(fd, SIOCSIFFLAGS, arg); case _IORW('i', 17, struct ifreq): return sys_ioctl(fd, SIOCGIFFLAGS, arg); case _IOW('i', 18, struct ifreq): return sys_ioctl(fd, SIOCSIFMEM, arg); case _IORW('i', 19, struct ifreq): return sys_ioctl(fd, SIOCGIFMEM, arg); case _IORW('i', 20, struct ifconf): return sys_ioctl(fd, SIOCGIFCONF, arg); case _IOW('i', 21, struct ifreq): /* SIOCSIFMTU */ return sys_ioctl(fd, SIOCSIFMTU, arg); case _IORW('i', 22, struct ifreq): /* SIOCGIFMTU */ return sys_ioctl(fd, SIOCGIFMTU, arg); case _IORW('i', 23, struct ifreq): return sys_ioctl(fd, SIOCGIFBRDADDR, arg); case _IOW('i', 24, struct ifreq): return sys_ioctl(fd, SIOCGIFBRDADDR, arg); case _IORW('i', 25, struct ifreq): return sys_ioctl(fd, SIOCGIFNETMASK, arg); case _IOW('i', 26, struct ifreq): return sys_ioctl(fd, SIOCSIFNETMASK, arg); case _IORW('i', 27, struct ifreq): return sys_ioctl(fd, SIOCGIFMETRIC, arg); case _IOW('i', 28, struct ifreq): return sys_ioctl(fd, SIOCSIFMETRIC, arg); case _IOW('i', 30, struct arpreq): return sys_ioctl(fd, SIOCSARP, arg); case _IOW('i', 31, struct arpreq): return sys_ioctl(fd, SIOCGARP, arg); case _IOW('i', 32, struct arpreq): return sys_ioctl(fd, SIOCGARP, arg); case _IOW('i', 40, struct ifreq): /* SIOCUPPER */ case _IOW('i', 41, struct ifreq): /* SIOCLOWER */ case _IOW('i', 44, struct ifreq): /* SIOCSETSYNC */ case _IOW('i', 45, struct ifreq): /* SIOCGETSYNC */ case _IOW('i', 46, struct ifreq): /* SIOCSSDSTATS */ case _IOW('i', 47, struct ifreq): /* SIOCSSESTATS */ case _IOW('i', 48, struct ifreq): /* SIOCSPROMISC */ return -EOPNOTSUPP; case _IOW('i', 49, struct ifreq): return sys_ioctl(fd, SIOCADDMULTI, arg); case _IOW('i', 50, struct ifreq): return sys_ioctl(fd, SIOCDELMULTI, arg); /* FDDI interface ioctls, unsupported. */ case _IOW('i', 51, struct ifreq): /* SIOCFDRESET */ case _IOW('i', 52, struct ifreq): /* SIOCFDSLEEP */ case _IOW('i', 53, struct ifreq): /* SIOCSTRTFMWAR */ case _IOW('i', 54, struct ifreq): /* SIOCLDNSTRTFW */ case _IOW('i', 55, struct ifreq): /* SIOCGETFDSTAT */ case _IOW('i', 56, struct ifreq): /* SIOCFDNMIINT */ case _IOW('i', 57, struct ifreq): /* SIOCFDEXUSER */ case _IOW('i', 58, struct ifreq): /* SIOCFDGNETMAP */ case _IOW('i', 59, struct ifreq): /* SIOCFDGIOCTL */ printk("FDDI ioctl, returning EOPNOTSUPP\n"); return -EOPNOTSUPP; case _IOW('t', 125, int): /* More stupid tty sunos ioctls, just * say it worked. */ return 0; /* Non posix grp */ case _IOW('t', 118, int): { int oldval, *ptr; cmd = TIOCSPGRP; ptr = (int *) arg; oldval = verify_area(VERIFY_WRITE, ptr, sizeof(int)); if(oldval) return oldval; oldval = *ptr; foo = sys_ioctl(fd, cmd, arg); if(*ptr == -1) { *ptr = oldval; foo = -EIO; } if(foo == -ENOTTY) foo = -EIO; return foo; } case _IOR('t', 119, int): { int oldval, *ptr; cmd = TIOCGPGRP; ptr = (int *) arg; oldval = verify_area(VERIFY_WRITE, ptr, sizeof(int)); if(oldval) return oldval; oldval = *ptr; foo = sys_ioctl(fd, cmd, arg); if(*ptr == -1) { *ptr = oldval; foo = -EIO; } if(foo == -ENOTTY) foo = -EIO; return foo; } } #if 0 if (cmd & 0xff00 == ('k' << 8)){ printk ("[[KBIO: %8.8x\n", (unsigned int) cmd); } #endif foo = sys_ioctl(fd, cmd, arg); /* so stupid... */ return (foo == -EINVAL ? -EOPNOTSUPP : foo); }
int cmain () { define_symbol (sym_monitor, "monitor"); int i; programme_identification = cons (sym_monitor, make_integer (2)); #if defined(have_sys_setsid) sys_setsid(); #endif initialise_kyu_script_commands (); multiplex_add_kyu_callback (on_ipc_read, (void *)0); global_environment = kyu_sx_default_environment (); global_environment = lx_environment_bind (global_environment, sym_on_event, lx_foreign_mu (sym_on_event, on_event)); global_environment = lx_environment_bind (global_environment, sym_power_on, lx_foreign_mu (sym_power_on, power_on)); global_environment = lx_environment_bind (global_environment, sym_power_down, lx_foreign_mu (sym_power_down, power_down)); global_environment = lx_environment_bind (global_environment, sym_power_reset, lx_foreign_mu (sym_power_reset, power_reset)); global_environment = lx_environment_bind (global_environment, sym_ctrl_alt_del, lx_foreign_mu (sym_ctrl_alt_del, ctrl_alt_del)); for (i = 1; curie_argv[i] != (char *)0; i++) { sexpr n = make_string (curie_argv[i]); if (truep(filep(n))) { open_script_files++; multiplex_add_sexpr (sx_open_i (io_open_read (curie_argv[i])), on_script_read, (void *)0); } else { native_system = make_symbol (curie_argv[i]); } } kyu_sd_add_listener_stdio (); while (multiplex() == mx_ok); return 21; }
asmlinkage int sunos_ioctl (int fd, unsigned long cmd, unsigned long arg) { int ret = -EBADF; if (fd >= SUNOS_NR_OPEN || !fcheck(fd)) goto out; /* First handle an easy compat. case for tty ldisc. */ if (cmd == TIOCSETD) { int __user *p; int ntty = N_TTY, tmp; mm_segment_t oldfs; p = (int __user *) arg; ret = -EFAULT; if (get_user(tmp, p)) goto out; if (tmp == 2) { oldfs = get_fs(); set_fs(KERNEL_DS); ret = sys_ioctl(fd, cmd, (unsigned long) &ntty); set_fs(oldfs); ret = (ret == -EINVAL ? -EOPNOTSUPP : ret); goto out; } } /* Binary compatibility is good American knowhow f****n' up. */ if (cmd == TIOCNOTTY) { ret = sys_setsid(); goto out; } /* SunOS networking ioctls. */ switch (cmd) { case _IOW('r', 10, struct rtentry): ret = sys_ioctl(fd, SIOCADDRT, arg); goto out; case _IOW('r', 11, struct rtentry): ret = sys_ioctl(fd, SIOCDELRT, arg); goto out; case _IOW('i', 12, struct ifreq): ret = sys_ioctl(fd, SIOCSIFADDR, arg); goto out; case _IOWR('i', 13, struct ifreq): ret = sys_ioctl(fd, SIOCGIFADDR, arg); goto out; case _IOW('i', 14, struct ifreq): ret = sys_ioctl(fd, SIOCSIFDSTADDR, arg); goto out; case _IOWR('i', 15, struct ifreq): ret = sys_ioctl(fd, SIOCGIFDSTADDR, arg); goto out; case _IOW('i', 16, struct ifreq): ret = sys_ioctl(fd, SIOCSIFFLAGS, arg); goto out; case _IOWR('i', 17, struct ifreq): ret = sys_ioctl(fd, SIOCGIFFLAGS, arg); goto out; case _IOW('i', 18, struct ifreq): ret = sys_ioctl(fd, SIOCSIFMEM, arg); goto out; case _IOWR('i', 19, struct ifreq): ret = sys_ioctl(fd, SIOCGIFMEM, arg); goto out; case _IOWR('i', 20, struct ifconf): ret = sys_ioctl(fd, SIOCGIFCONF, arg); goto out; case _IOW('i', 21, struct ifreq): /* SIOCSIFMTU */ ret = sys_ioctl(fd, SIOCSIFMTU, arg); goto out; case _IOWR('i', 22, struct ifreq): /* SIOCGIFMTU */ ret = sys_ioctl(fd, SIOCGIFMTU, arg); goto out; case _IOWR('i', 23, struct ifreq): ret = sys_ioctl(fd, SIOCGIFBRDADDR, arg); goto out; case _IOW('i', 24, struct ifreq): ret = sys_ioctl(fd, SIOCSIFBRDADDR, arg); goto out; case _IOWR('i', 25, struct ifreq): ret = sys_ioctl(fd, SIOCGIFNETMASK, arg); goto out; case _IOW('i', 26, struct ifreq): ret = sys_ioctl(fd, SIOCSIFNETMASK, arg); goto out; case _IOWR('i', 27, struct ifreq): ret = sys_ioctl(fd, SIOCGIFMETRIC, arg); goto out; case _IOW('i', 28, struct ifreq): ret = sys_ioctl(fd, SIOCSIFMETRIC, arg); goto out; case _IOW('i', 30, struct arpreq): ret = sys_ioctl(fd, SIOCSARP, arg); goto out; case _IOWR('i', 31, struct arpreq): ret = sys_ioctl(fd, SIOCGARP, arg); goto out; case _IOW('i', 32, struct arpreq): ret = sys_ioctl(fd, SIOCDARP, arg); goto out; case _IOW('i', 40, struct ifreq): /* SIOCUPPER */ case _IOW('i', 41, struct ifreq): /* SIOCLOWER */ case _IOW('i', 44, struct ifreq): /* SIOCSETSYNC */ case _IOW('i', 45, struct ifreq): /* SIOCGETSYNC */ case _IOW('i', 46, struct ifreq): /* SIOCSSDSTATS */ case _IOW('i', 47, struct ifreq): /* SIOCSSESTATS */ case _IOW('i', 48, struct ifreq): /* SIOCSPROMISC */ ret = -EOPNOTSUPP; goto out; case _IOW('i', 49, struct ifreq): ret = sys_ioctl(fd, SIOCADDMULTI, arg); goto out; case _IOW('i', 50, struct ifreq): ret = sys_ioctl(fd, SIOCDELMULTI, arg); goto out; /* FDDI interface ioctls, unsupported. */ case _IOW('i', 51, struct ifreq): /* SIOCFDRESET */ case _IOW('i', 52, struct ifreq): /* SIOCFDSLEEP */ case _IOW('i', 53, struct ifreq): /* SIOCSTRTFMWAR */ case _IOW('i', 54, struct ifreq): /* SIOCLDNSTRTFW */ case _IOW('i', 55, struct ifreq): /* SIOCGETFDSTAT */ case _IOW('i', 56, struct ifreq): /* SIOCFDNMIINT */ case _IOW('i', 57, struct ifreq): /* SIOCFDEXUSER */ case _IOW('i', 58, struct ifreq): /* SIOCFDGNETMAP */ case _IOW('i', 59, struct ifreq): /* SIOCFDGIOCTL */ printk("FDDI ioctl, returning EOPNOTSUPP\n"); ret = -EOPNOTSUPP; goto out; case _IOW('t', 125, int): /* More stupid tty sunos ioctls, just * say it worked. */ ret = 0; goto out; /* Non posix grp */ case _IOW('t', 118, int): { int oldval, newval, __user *ptr; cmd = TIOCSPGRP; ptr = (int __user *) arg; ret = -EFAULT; if (get_user(oldval, ptr)) goto out; ret = sys_ioctl(fd, cmd, arg); __get_user(newval, ptr); if (newval == -1) { __put_user(oldval, ptr); ret = -EIO; } if (ret == -ENOTTY) ret = -EIO; goto out; } case _IOR('t', 119, int): { int oldval, newval, __user *ptr; cmd = TIOCGPGRP; ptr = (int __user *) arg; ret = -EFAULT; if (get_user(oldval, ptr)) goto out; ret = sys_ioctl(fd, cmd, arg); __get_user(newval, ptr); if (newval == -1) { __put_user(oldval, ptr); ret = -EIO; } if (ret == -ENOTTY) ret = -EIO; goto out; } } #if 0 if ((cmd & 0xff00) == ('k' << 8)) { printk ("[[KBIO: %8.8x\n", (unsigned int) cmd); } #endif ret = sys_ioctl(fd, cmd, arg); /* so stupid... */ ret = (ret == -EINVAL ? -EOPNOTSUPP : ret); out: return ret; }