X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Fos_priority.c;h=5946f2b3d4b32ae4ad256a0859bb64631c906742;hb=72c8645af31896829b674b575c5375706f362a30;hp=12dba6a6bd92a8337eec8be7d95c90679309fb8e;hpb=73fd3edc250a6f7df402c63820774b5cbd1a73b1;p=oweals%2Fgnunet.git diff --git a/src/util/os_priority.c b/src/util/os_priority.c index 12dba6a6b..5946f2b3d 100644 --- a/src/util/os_priority.c +++ b/src/util/os_priority.c @@ -343,112 +343,6 @@ child_wait_thread (void *arg) #endif -/** - * Set process priority - * - * @param proc pointer to process structure - * @param prio priority value - * @return GNUNET_OK on success, GNUNET_SYSERR on error - */ -int -GNUNET_OS_set_process_priority (struct GNUNET_OS_Process *proc, - enum GNUNET_SCHEDULER_Priority prio) -{ - int rprio; - - GNUNET_assert (prio < GNUNET_SCHEDULER_PRIORITY_COUNT); - if (GNUNET_SCHEDULER_PRIORITY_KEEP == prio) - return GNUNET_OK; - - /* convert to MINGW/Unix values */ - switch (prio) - { - case GNUNET_SCHEDULER_PRIORITY_UI: - case GNUNET_SCHEDULER_PRIORITY_URGENT: -#ifdef MINGW - rprio = HIGH_PRIORITY_CLASS; -#else - rprio = 0; -#endif - break; - - case GNUNET_SCHEDULER_PRIORITY_HIGH: -#ifdef MINGW - rprio = ABOVE_NORMAL_PRIORITY_CLASS; -#else - rprio = 5; -#endif - break; - - case GNUNET_SCHEDULER_PRIORITY_DEFAULT: -#ifdef MINGW - rprio = NORMAL_PRIORITY_CLASS; -#else - rprio = 7; -#endif - break; - - case GNUNET_SCHEDULER_PRIORITY_BACKGROUND: -#ifdef MINGW - rprio = BELOW_NORMAL_PRIORITY_CLASS; -#else - rprio = 10; -#endif - break; - - case GNUNET_SCHEDULER_PRIORITY_IDLE: -#ifdef MINGW - rprio = IDLE_PRIORITY_CLASS; -#else - rprio = 19; -#endif - break; - default: - GNUNET_assert (0); - return GNUNET_SYSERR; - } - - /* Set process priority */ -#ifdef MINGW - { - HANDLE h = proc->handle; - - GNUNET_assert (h != NULL); - SetPriorityClass (h, rprio); - } -#elif LINUX - pid_t pid; - - pid = proc->pid; - if ((0 == pid) || (pid == getpid ())) - { - int have = nice (0); - int delta = rprio - have; - - errno = 0; - if ((delta != 0) && (rprio == nice (delta)) && (errno != 0)) - { - LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING | GNUNET_ERROR_TYPE_BULK, "nice"); - return GNUNET_SYSERR; - } - } - else - { - if (0 != setpriority (PRIO_PROCESS, pid, rprio)) - { - LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING | GNUNET_ERROR_TYPE_BULK, - "setpriority"); - return GNUNET_SYSERR; - } - } -#else - LOG (GNUNET_ERROR_TYPE_DEBUG | GNUNET_ERROR_TYPE_BULK, - "Priority management not availabe for this platform\n"); -#endif - return GNUNET_OK; -} - - #if MINGW static char * CreateCustomEnvTable (char **vars) @@ -640,6 +534,7 @@ start_process (int pipe_control, { struct GNUNET_DISK_PipeHandle *childpipe; int dup_childpipe_read_fd = -1; + childpipe = GNUNET_DISK_pipe (GNUNET_NO, GNUNET_NO, GNUNET_YES, GNUNET_NO); if (NULL == childpipe) return NULL; @@ -651,9 +546,9 @@ start_process (int pipe_control, &childpipe_read_fd, sizeof (int))) || (-1 == (dup_childpipe_read_fd = dup (childpipe_read_fd)))) { - if (childpipe_read) + if (NULL != childpipe_read) GNUNET_DISK_file_close (childpipe_read); - if (childpipe_write) + if (NULL != childpipe_write) GNUNET_DISK_file_close (childpipe_write); if (0 <= dup_childpipe_read_fd) close (dup_childpipe_read_fd); @@ -664,7 +559,6 @@ start_process (int pipe_control, } else { - childpipe_read = NULL; childpipe_write = NULL; childpipe_read_fd = -1; } @@ -711,9 +605,7 @@ start_process (int pipe_control, int eno = errno; LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "fork"); GNUNET_array_grow (lscp, ls, 0); - if (childpipe_read) - GNUNET_DISK_file_close (childpipe_read); - if (childpipe_write) + if (NULL != childpipe_write) GNUNET_DISK_file_close (childpipe_write); if (0 <= childpipe_read_fd) close (childpipe_read_fd);