additional problems i've realised: - this should be process specific, not LWP specific.
- we might need some way to copy this across fork(). - as l_sysent seems unreliable, we should just remove it. > In a nut-shell, we cannot rely on the struct lwp's l_sysent member > to determine if a particular syscall is "active", since it could be > overwritten during signal handling. As a result, it is possible to > unload modules which have active syscalls, and when those syscalls > are resumed they'll return into memory that most likely no longer > contains the syscall code. (A big "Thanks!" goes out to Masao > Uebayashi for identifying this bug.) ah, i think i understand this now. i wonder if any of the system calls that support being restarted actually are modloadable (ie, is this a non-problem?) most system calls aren't and the few that are are pretty basic. i have another idea. if these calls, at entry, mark the module as "busy in proc X". then when the unload is attempted, if X is still around, fail. that pushes all the resources into the module again, and seems to plug all the holes. .mrg.
