Blame view
arch/um/drivers/ubd_user.c
1.23 KB
91acb21f0 [PATCH] uml: reve... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/* * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) * Copyright (C) 2001 Ridgerun,Inc (glonnon@ridgerun.com) * Licensed under the GPL */ #include <stddef.h> #include <unistd.h> #include <errno.h> #include <sched.h> #include <signal.h> #include <string.h> #include <netinet/in.h> #include <sys/time.h> #include <sys/socket.h> #include <sys/mman.h> #include <sys/param.h> #include "asm/types.h" |
91acb21f0 [PATCH] uml: reve... |
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
#include "ubd_user.h" #include "os.h" #include "cow.h" #include <endian.h> #include <byteswap.h> void ignore_sigwinch_sig(void) { signal(SIGWINCH, SIG_IGN); } int start_io_thread(unsigned long sp, int *fd_out) { int pid, fds[2], err; err = os_pipe(fds, 1, 1); if(err < 0){ printk("start_io_thread - os_pipe failed, err = %d ", -err); goto out; } kernel_fd = fds[0]; *fd_out = fds[1]; |
89df6bfc0 uml: DEBUG_SHIRQ ... |
44 45 46 47 48 49 |
err = os_set_fd_block(*fd_out, 0); if (err) { printk("start_io_thread - failed to set nonblocking I/O. "); goto out_close; } |
4dbed85a3 uml: stop gdb fro... |
50 |
pid = clone(io_thread, (void *) sp, CLONE_FILES | CLONE_VM, NULL); |
91acb21f0 [PATCH] uml: reve... |
51 |
if(pid < 0){ |
91acb21f0 [PATCH] uml: reve... |
52 |
err = -errno; |
56bd194bb uml: driver forma... |
53 54 |
printk("start_io_thread - clone failed : errno = %d ", errno); |
91acb21f0 [PATCH] uml: reve... |
55 56 57 58 59 60 61 62 63 64 65 |
goto out_close; } return(pid); out_close: os_close_file(fds[0]); os_close_file(fds[1]); kernel_fd = -1; *fd_out = -1; out: |
56bd194bb uml: driver forma... |
66 |
return err; |
91acb21f0 [PATCH] uml: reve... |
67 |
} |