Subject: Re: more siginfo q;s
To: Christos Zoulas <christos@zoulas.com>
From: enami tsugutomo <enami@but-b.or.jp>
List: tech-kern
Date: 09/14/2003 17:43:26
> +static void ksiginfo_del(struct proc *p, ksiginfo_t *);
The p isn't necessary.
> + if (
> +#ifdef notyet /* XXX: QUEUING */
> + ksi->ksi_signo >= SIGRTMIN ||
> +#endif
> + (kpool = ksiginfo_get(p, ksi->ksi_signo)) == NULL) {
> + if ((kpool = pool_get(&ksiginfo_pool, PR_NOWAIT)) == NULL)
> + return;
> + *kpool = *ksi;
> + ksiginfo_put(p, kpool);
> + } else
> + *kpool = *ksi;
As the ksiginfo_get() returns an element with leaving it on the list,
I guess the assignment in the else-clause break the list.
> + exithook_establish(ksiginfo_exithook, NULL);
Use tab to indent.
> + kpsendsig(l, ksi, returnmask);
> + ksiginfo_del(p, ksi);
> + pool_put(&ksiginfo_pool, ksi);
Hmm, it looks like kpsendsig() may sleep but are you sure that bad
thing won't occur? (I don't know since I just read this diff through
peephole).
> + struct ksiginfo *ksi_next;
> + struct ksiginfo *ksi_prev;
Why needs to be doublly linked?
enami.