diff options
Diffstat (limited to 'package/rpm/patches/patch-rpmio_rpmsq_c')
-rw-r--r-- | package/rpm/patches/patch-rpmio_rpmsq_c | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/package/rpm/patches/patch-rpmio_rpmsq_c b/package/rpm/patches/patch-rpmio_rpmsq_c deleted file mode 100644 index 779101b62..000000000 --- a/package/rpm/patches/patch-rpmio_rpmsq_c +++ /dev/null @@ -1,132 +0,0 @@ ---- rpm-4.7.0.orig/rpmio/rpmsq.c 2009-03-03 07:51:52.000000000 +0100 -+++ rpm-4.7.0/rpmio/rpmsq.c 2009-06-25 20:15:31.954966249 +0200 -@@ -83,6 +83,7 @@ static rpmsq rpmsqQueue = &rpmsqRock; - */ - static int rpmsqInsert(void * elem, void * prev) - { -+ sigset_t new_set, old_set; - rpmsq sq = (rpmsq) elem; - int ret = -1; - -@@ -91,7 +92,9 @@ static int rpmsqInsert(void * elem, void - if (_rpmsq_debug) - fprintf(stderr, " Insert(%p): %p\n", ME(), sq); - #endif -- ret = sighold(SIGCHLD); -+ sigemptyset(&new_set); -+ sigaddset(&new_set, SIGCHLD); -+ ret = sigprocmask(SIG_BLOCK, &new_set, &old_set); - if (ret == 0) { - sq->child = 0; - sq->reaped = 0; -@@ -102,7 +105,7 @@ fprintf(stderr, " Insert(%p): %p\n", - sq->id = ME(); - ret = pthread_mutex_init(&sq->mutex, NULL); - insque(elem, (prev != NULL ? prev : rpmsqQueue)); -- ret = sigrelse(SIGCHLD); -+ ret = sigprocmask(SIG_SETMASK, &old_set, NULL); - } - } - return ret; -@@ -115,6 +118,7 @@ fprintf(stderr, " Insert(%p): %p\n", - */ - static int rpmsqRemove(void * elem) - { -+ sigset_t new_set, old_set; - rpmsq sq = (rpmsq) elem; - int ret = -1; - -@@ -124,7 +128,9 @@ static int rpmsqRemove(void * elem) - if (_rpmsq_debug) - fprintf(stderr, " Remove(%p): %p\n", ME(), sq); - #endif -- ret = sighold (SIGCHLD); -+ sigemptyset(&new_set); -+ sigaddset(&new_set, SIGCHLD); -+ ret = sigprocmask(SIG_BLOCK, &new_set, &old_set); - if (ret == 0) { - remque(elem); - -@@ -142,7 +148,7 @@ fprintf(stderr, " Remove(%p): %p\n", - sq->reaped = 0; - sq->child = 0; - #endif -- ret = sigrelse(SIGCHLD); -+ ret = sigprocmask(SIG_SETMASK, &old_set, NULL); - } - } - return ret; -@@ -289,6 +295,7 @@ int rpmsqEnable(int signum, rpmsqAction_ - - pid_t rpmsqFork(rpmsq sq) - { -+ sigset_t new_set, old_set; - pid_t pid; - int xx; - int nothreads = 0; /* XXX: Shouldn't this be a global? */ -@@ -304,7 +311,9 @@ fprintf(stderr, " Enable(%p): %p\n", - - xx = pipe(sq->pipes); - -- xx = sighold(SIGCHLD); -+ sigemptyset(&new_set); -+ sigaddset(&new_set, SIGCHLD); -+ xx = sigprocmask(SIG_BLOCK, &new_set, &old_set); - - /* - * Initialize the cond var mutex. We have to aquire the lock we -@@ -355,7 +364,7 @@ fprintf(stderr, " Parent(%p): %p chil - } - - out: -- xx = sigrelse(SIGCHLD); -+ xx = sigprocmask(SIG_SETMASK, &old_set, NULL); - return sq->child; - } - -@@ -367,12 +376,15 @@ out: - */ - static int rpmsqWaitUnregister(rpmsq sq) - { -+ sigset_t new_set, old_set; - int nothreads = 0; - int ret = 0; - int xx; - - /* Protect sq->reaped from handler changes. */ -- ret = sighold(SIGCHLD); -+ sigemptyset(&new_set); -+ sigaddset(&new_set, SIGCHLD); -+ ret = sigprocmask(SIG_BLOCK, &new_set, &old_set); - - /* Start the child, linux often runs child before parent. */ - if (sq->pipes[0] >= 0) -@@ -388,9 +400,9 @@ static int rpmsqWaitUnregister(rpmsq sq) - while (ret == 0 && sq->reaped != sq->child) { - if (nothreads) - /* Note that sigpause re-enables SIGCHLD. */ -- ret = sigpause(SIGCHLD); -+ ret = sigsuspend(&new_set); - else { -- xx = sigrelse(SIGCHLD); -+ xx = sigprocmask(SIG_SETMASK, &old_set, NULL); - - /* - * We start before the fork with this mutex locked; -@@ -398,14 +410,14 @@ static int rpmsqWaitUnregister(rpmsq sq) - * So if we get the lock the child has been reaped. - */ - ret = pthread_mutex_lock(&sq->mutex); -- xx = sighold(SIGCHLD); -+ xx = sigprocmask(SIG_BLOCK, &new_set, &old_set); - } - } - - /* Accumulate stopwatch time spent waiting, potential performance gain. */ - sq->ms_scriptlets += rpmswExit(&sq->op, -1)/1000; - -- xx = sigrelse(SIGCHLD); -+ xx = sigprocmask(SIG_SETMASK, &old_set, NULL); - - #ifdef _RPMSQ_DEBUG - if (_rpmsq_debug) |