]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] Remove another for_each_process loop
authorMatthew Wilcox <willy@debian.org>
Thu, 3 Oct 2002 07:56:22 +0000 (00:56 -0700)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Thu, 3 Oct 2002 07:56:22 +0000 (00:56 -0700)
Convert send_sigurg() to the for_each_task_pid() mechanism.  Also in
the case where we were trying to send a signal to a non-existent PID,
don't bother searching for -PID in the PGID array; we won't find it.

fs/fcntl.c

index 2aca0bd9d50c49d5e3bda7b1e0ee66ab765df427..44afb222b22f13eb78153082f86da5ac6fd0d404 100644 (file)
@@ -491,15 +491,17 @@ void send_sigio(struct fown_struct *fown, int fd, int band)
                goto out_unlock_fown;
        
        read_lock(&tasklist_lock);
-       if ( (pid > 0) && (p = find_task_by_pid(pid)) ) {
-               send_sigio_to_task(p, fown, fd, band);
-               goto out_unlock_task;
+       if (pid > 0) {
+               if (p = find_task_by_pid(pid)) {
+                       send_sigio_to_task(p, fown, fd, band);
+               }
+       } else {
+               for_each_task_pid(-pid, PIDTYPE_PGID, p, l, pidptr) {
+                       send_sigio_to_task(p, fown, fd, band);
+               }
        }
-       for_each_task_pid(-pid, PIDTYPE_PGID, p, l, pidptr)
-               send_sigio_to_task(p, fown,fd,band);
-out_unlock_task:
        read_unlock(&tasklist_lock);
-out_unlock_fown:
+ out_unlock_fown:
        read_unlock(&fown->lock);
 }
 
@@ -523,21 +525,17 @@ int send_sigurg(struct fown_struct *fown)
        ret = 1;
        
        read_lock(&tasklist_lock);
-       if ((pid > 0) && (p = find_task_by_pid(pid))) {
-               send_sigurg_to_task(p, fown);
-               goto out_unlock_task;
-       }
-       for_each_process(p) {
-               int match = p->pid;
-               if (pid < 0)
-                       match = -p->pgrp;
-               if (pid != match)
-                       continue;
-               send_sigurg_to_task(p, fown);
+       if (pid > 0) {
+               if (p = find_task_by_pid(pid)) {
+                       send_sigurg_to_task(p, fown);
+               }
+       } else {
+               for_each_task_pid(-pid, PIDTYPE_PGID, p, l, pidptr) {
+                       send_sigurg_to_task(p, fown);
+               }
        }
-out_unlock_task:
        read_unlock(&tasklist_lock);
-out_unlock_fown:
+ out_unlock_fown:
        read_unlock(&fown->lock);
        return ret;
 }