Re: [PATCH] pcmcia event thread. (fwd)

David Woodhouse
2000-11-13T15:14:36Z

jgarzik@mandrakesoft.com said:
> Doh, totally forgot about that. Will this work:
> save_current = current;
> current = find_task_by_pid(1);
> waitpid(...);
> current = save_current;

Changing the thread's parent to current->pid would be better than modifying
current. Still sucks though....

> In any case, we -really- need a wait_for_kernel_thread_to_die()
> function.

up_and_exit() would do it. Or preferably passing the address of the
semaphore as an extra argument to kernel_thread() in the first place.

In the meantime, enough other places in the kernel have this same race that
I'm not too concerned about it. Hopefully, we'll get the extra arg to
kernel_thread before the final cut of 2.4, and this code can get converted
along with everything else.

> > + spin_lock_irq(&current->sigmask_lock);
> > + sigfillset(&current->blocked);
> > + recalc_sigpending(current);
> > + spin_unlock_irq(&current->sigmask_lock);

> what does this do?

Well, I _hope_ it blocks all signals, so that we can sleep in
TASK_INTERRUPTIBLE without adding 1 to the load average, and without having
to worry about the pesky things actually interrupting us.

jgarzik@mandrakesoft.com said:
> why do you store the event_thread_pid but never use it?

Because I got half way through doing waitpid() before I realised it was
sucky. We store it short-term so we can print it. No reason why we can't
shift the static declaration into init_pcmcia_cs() though.

--
dwmw2