cvs commit: src/lib/libpthread/arch/ia64/ia64 context.S src/lib/libpthread/arch/ia64/include pthread_md.h

Marcel Moolenaar marcel at FreeBSD.org
Thu Aug 7 01:03:07 PDT 2003


marcel      2003/08/07 01:03:05 PDT

  FreeBSD src repository

  Modified files:
    lib/libpthread/arch/ia64/ia64 context.S 
    lib/libpthread/arch/ia64/include pthread_md.h 
  Log:
  Grok async contexts. When a thread is interrupted and an upcall
  happens, the context of the interrupted thread is exported to
  userland. Unlike most contexts, it will be an async context and
  we cannot easily use our existing functions to set such a
  context.
  To avoid a lot of complexity that may possibly interfere with
  the common case, we simply let the kernel deal with it. However,
  we don't use the EPC based syscall path to invoke setcontext(2).
  No, we use the break-based syscall path. That way the trapframe
  will be compatible with the context we're trying to restore and
  we save the kernel a lot of trouble. The kind of trouble we did
  not want to go though ourselves...
  
  However, we also need to set the threads mailbox and there's no
  syscall to help us out. To avoid creating a new syscall, we use
  the context itself to pass the information to the kernel so that
  the kernel can update the mailbox. This involves setting a flag
  (_MC_FLAGS_KSE_SET_MBOX) and setting ifa (the address) and isr
  (the value).
  
  Revision  Changes    Path
  1.4       +14 -0     src/lib/libpthread/arch/ia64/ia64/context.S
  1.9       +27 -9     src/lib/libpthread/arch/ia64/include/pthread_md.h


More information about the cvs-src mailing list