tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: [PATCH] swapcontext vs libpthread



On Aug 25,  4:11am, manu%netbsd.org@localhost (Emmanuel Dreyfus) wrote:
-- Subject: Re: [PATCH] swapcontext vs libpthread

| On Fri, Aug 24, 2012 at 11:26:24PM -0400, Christos Zoulas wrote:
| > In lib/libc/sys/Makefile.inc, move setcontext.S from the ASM section to the
| > WEAKASM section. This will define for you a _sys_setcontext() to use 
directly.
| 
| Right, this is the easy part. If you run this you see the hard part:
| grep -r setcontect src/lib/libc/arch
| 
| We have many setcontext system calls in assembly that need to be turned
| into calls to _C_LABEL(setcontext).

$ fgrep -r setcontext . | grep -v _C_LABEL | grep -v sigtramp | fgrep -v .c:
[ skip _C_LABEL, sigtramp is ok since it uses the machine generated context,
  c files are ok too ]

FIX: ./alpha/gen/swapcontext.S:      CALL(setcontext)                /* 
setcontext(ucp) */

FIX: ./hppa/gen/swapcontext.S:       SYSCALL(setcontext)

OK: ./i386/gen/resumecontext.S:     pushl   %ecx    /* argument for exit() or 
setcontext() */
OK: ./i386/gen/swapcontext.S:       /* No need to error-check: setcontext() 
must have failed. */

FIX: ./mips/gen/_resumecontext.S:    SYSTRAP(setcontext)                        
     #   yes, become it.
FIX: ./mips/gen/swapcontext.S:       SYSTRAP(setcontext)

FIX?: ./sh3/gen/swapcontext.S:        mov.l   .L_setcontext, r2
FIX?: ./sh3/gen/swapcontext.S:2:      CALL    r2                      /* 
setcontext(ucp) */
OK: ./sh3/gen/swapcontext.S:        /* if we get here, return error from 
setcontext */

FIX: ./sparc/gen/swapcontext.S:      mov     SYS_setcontext|SYSCALL_G2RFLAG, %g1

FIX: ./sparc64/gen/swapcontext.S:    mov     SYS_setcontext|SYSCALL_G5RFLAG, %g1

FIX: ./powerpc64/gen/swapcontext.S:  bl      .setcontext                     # 
setcontext(ucp)

So swapcontext needs to be fixed in a few archs I think...
Some of the fixes are trivial.

christos


Home | Main Index | Thread Index | Old Index