[tuxdroid-svn] r293 - in daemon/trunk: . libs
Status: Beta
Brought to you by:
ks156
From: doegox <c2m...@c2...> - 2007-04-26 11:07:10
|
Author: doegox Date: 2007-04-24 22:25:34 +0200 (Tue, 24 Apr 2007) New Revision: 293 Modified: daemon/trunk/libs/USBDaemon_tcp_server.c daemon/trunk/libs/USBDaemon_tcp_server.h daemon/trunk/libs/USBDaemon_usb_enum.c daemon/trunk/libs/USBDaemon_usb_enum.h daemon/trunk/main.c Log: Open USB handler and setuid before creating threads, this makes things easier especially to get closer to linuxthread compatibility. Modified: daemon/trunk/libs/USBDaemon_tcp_server.c =================================================================== --- daemon/trunk/libs/USBDaemon_tcp_server.c 2007-04-23 19:45:50 UTC (rev 292) +++ daemon/trunk/libs/USBDaemon_tcp_server.c 2007-04-24 20:25:34 UTC (rev 293) @@ -43,13 +43,10 @@ pthread_mutex_t tcp_mutex; int tcp_clients_handle[TUX_MAX_TCP_CLIENTS] = - { [0 ... TUX_MAX_TCP_CLIENTS - 1] = -1 }; + {[(0)...(TUX_MAX_TCP_CLIENTS - 1)] = -1 }; client_name_t tcp_clients_name[TUX_MAX_TCP_CLIENTS]; unsigned char tcp_clients_count = 0; -pthread_cond_t dropcond; -pthread_mutex_t dropcond_mutex; - /*_____________________ F U N C T I O N S __________________________________*/ /************************************************************************ */ @@ -63,10 +60,7 @@ int val; pthread_mutex_init(&tcp_mutex, NULL); - pthread_mutex_init(&dropcond_mutex, NULL); - /* Wait for privileges to be dropped */ - pthread_cond_wait(&dropcond, &dropcond_mutex); if ((tcp_server_handle = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("TCP socket : server error\n"); @@ -74,8 +68,8 @@ } val = 1; - if (setsockopt(tcp_server_handle, SOL_SOCKET, SO_REUSEADDR, - &val, sizeof(val)) < 0) + if (setsockopt + (tcp_server_handle, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)) < 0) { /* Don't need to quit on this one. */ printf("TCP socket : setsockopt error\n"); @@ -85,8 +79,9 @@ tcp_server_sockaddr.sin_family = AF_INET; tcp_server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY); tcp_server_sockaddr.sin_port = htons(TUX_SERVER_PORT); - if (bind(tcp_server_handle, (struct sockaddr *)&tcp_server_sockaddr, - sizeof(tcp_server_sockaddr)) < 0) + if (bind + (tcp_server_handle, (struct sockaddr *)&tcp_server_sockaddr, + sizeof(tcp_server_sockaddr)) < 0) { printf("TCP socket : binding error\n"); terminate(2); Modified: daemon/trunk/libs/USBDaemon_tcp_server.h =================================================================== --- daemon/trunk/libs/USBDaemon_tcp_server.h 2007-04-23 19:45:50 UTC (rev 292) +++ daemon/trunk/libs/USBDaemon_tcp_server.h 2007-04-24 20:25:34 UTC (rev 293) @@ -52,7 +52,6 @@ extern unsigned char tcp_clients_count; extern client_name_t tcp_clients_name[]; extern pthread_mutex_t tcp_mutex; -extern pthread_cond_t dropcond; /*_____________________ F U N C T I O N S __________________________________*/ extern void *tcp_server_start_task(void *unused); Modified: daemon/trunk/libs/USBDaemon_usb_enum.c =================================================================== --- daemon/trunk/libs/USBDaemon_usb_enum.c 2007-04-23 19:45:50 UTC (rev 292) +++ daemon/trunk/libs/USBDaemon_usb_enum.c 2007-04-24 20:25:34 UTC (rev 293) @@ -104,13 +104,11 @@ /************************************************************************ */ -/* usb_start_task_TuxDroid() */ +/* usb_init_TuxDroid() */ /************************************************************************ */ -void *usb_start_task(void *unused) +int usb_init_TuxDroid(void) { - unsigned char dongle_is_present_counter; - pthread_mutex_init(&usb_mutex, NULL); /* Find Tux */ do @@ -132,7 +130,7 @@ "the firmware to version 1.00 or better.\n" "Check http://www.tuxisalive.com/documentation/how-to/updating-the-firmware\n" "for details.\n"); - terminate(1); + return (0); } /* Get Device handle */ @@ -140,12 +138,20 @@ if (tux_handle == NULL) { printf("You must load the daemon in root mode\n"); - terminate(1); + return (0); } + return (1); +} - /* Signals that root privileges were dropped */ - pthread_cond_signal(&dropcond); +/************************************************************************ */ +/* usb_start_task_TuxDroid() */ + +/************************************************************************ */ +void *usb_start_task(void *unused) +{ + unsigned char dongle_is_present_counter; + usleep(50000); TUX_USB_STATUS = TUX_USB_CONNECTED; /* Reinit audio channel */ Modified: daemon/trunk/libs/USBDaemon_usb_enum.h =================================================================== --- daemon/trunk/libs/USBDaemon_usb_enum.h 2007-04-23 19:45:50 UTC (rev 292) +++ daemon/trunk/libs/USBDaemon_usb_enum.h 2007-04-24 20:25:34 UTC (rev 293) @@ -42,3 +42,4 @@ extern struct usb_device *usb_find_TuxDroid(); extern struct usb_dev_handle *usb_open_TuxDroid(struct usb_device *device); extern void *usb_start_task(void *unused); +extern int usb_init_TuxDroid(void); Modified: daemon/trunk/main.c =================================================================== --- daemon/trunk/main.c 2007-04-23 19:45:50 UTC (rev 292) +++ daemon/trunk/main.c 2007-04-24 20:25:34 UTC (rev 293) @@ -264,6 +264,11 @@ usb_init(); #endif + /* open USB handler and setuid nobody */ + if (!usb_init_TuxDroid()) + { + terminate(1); + } /* Gestion Multithread */ if (!g_thread_supported()) { @@ -274,8 +279,6 @@ printf("g_thread NOT supported\n"); terminate(1); } - - pthread_cond_init(&dropcond, 0); /* Start USB task thread */ UsbThread = g_thread_create((GThreadFunc) usb_start_task, NULL, TRUE, &error); |