X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fum%2Fdrivers%2Fport_user.c;h=c43e8bb3250264940af52ea528fe6a378fe41f67;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=1e8592ec1158fa64cd8d03ec7954696d8b4095f7;hpb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;p=linux-2.6.git diff --git a/arch/um/drivers/port_user.c b/arch/um/drivers/port_user.c index 1e8592ec1..c43e8bb32 100644 --- a/arch/um/drivers/port_user.c +++ b/arch/um/drivers/port_user.c @@ -18,7 +18,6 @@ #include "user.h" #include "chan_user.h" #include "port.h" -#include "helper.h" #include "os.h" struct port_chan { @@ -28,7 +27,7 @@ struct port_chan { char dev[sizeof("32768\0")]; }; -void *port_init(char *str, int device, struct chan_opts *opts) +static void *port_init(char *str, int device, struct chan_opts *opts) { struct port_chan *data; void *kern_data; @@ -65,7 +64,7 @@ void *port_init(char *str, int device, struct chan_opts *opts) return(NULL); } -void port_free(void *d) +static void port_free(void *d) { struct port_chan *data = d; @@ -73,7 +72,8 @@ void port_free(void *d) kfree(data); } -int port_open(int input, int output, int primary, void *d, char **dev_out) +static int port_open(int input, int output, int primary, void *d, + char **dev_out) { struct port_chan *data = d; int fd, err; @@ -92,7 +92,7 @@ int port_open(int input, int output, int primary, void *d, char **dev_out) return(fd); } -void port_close(int fd, void *d) +static void port_close(int fd, void *d) { struct port_chan *data = d; @@ -100,13 +100,6 @@ void port_close(int fd, void *d) os_close_file(fd); } -int port_console_write(int fd, const char *buf, int n, void *d) -{ - struct port_chan *data = d; - - return(generic_console_write(fd, buf, n, &data->tt)); -} - struct chan_ops port_ops = { .type = "port", .init = port_init, @@ -114,7 +107,7 @@ struct chan_ops port_ops = { .close = port_close, .read = generic_read, .write = generic_write, - .console_write = port_console_write, + .console_write = generic_console_write, .window_size = generic_window_size, .free = port_free, .winch = 1, @@ -123,12 +116,18 @@ struct chan_ops port_ops = { int port_listen_fd(int port) { struct sockaddr_in addr; - int fd, err; + int fd, err, arg; fd = socket(PF_INET, SOCK_STREAM, 0); if(fd == -1) return(-errno); + arg = 1; + if(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &arg, sizeof(arg)) < 0){ + err = -errno; + goto out; + } + addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = htonl(INADDR_ANY);