From: Thiemo S. <th...@ne...> - 2005-05-31 21:08:00
|
Christophe Rhodes wrote: [snip] > So, to summarize, I think the right fix to all this is > > * forget about getting a void * back from an os_context *; it should > never be necessary; > > * make the various pseudo-handlers called from sigsegv_handler > explicitly take os_context_t * third arguments rather than void *; > > * divide the thread-specific handler functions into two parts: one, a > kernel-facing handler function such as sig_stop_for_gc_handler, > which is responsible for getting a context from a void_context, and > a lisp-facing function sig_stop_for_gc which is responsible for > performing the action given an os_context_t, and as such can > therefore be used as a deferred handler. > > Then, when we hit the trap at the end of a pseudo-atomic section, the > kernel-facing handler gets us an os_context_t from the handler > arguments, and calls the handler function that we've deferred to with > that os_context_t. > > Does that make sense? Sorry for not reviewing your work in a terribly > timely fashion. :-( Yes, it does make sense, but with the current patches pending and Gabor's changes around I'll postpone that. Thiemo |