cvs commit: src/lib/libc/amd64 SYS.h src/lib/libc/arm SYS.h src/lib/libc/i386 SYS.h src/lib/libc/ia64 SYS.h src/lib/libc/sparc64 SYS.h

Peter Wemm peter at FreeBSD.org
Wed Jul 4 23:18:39 UTC 2007


peter       2007-07-04 23:18:39 UTC

  FreeBSD src repository

  Modified files:
    lib/libc/amd64       SYS.h 
    lib/libc/arm         SYS.h 
    lib/libc/i386        SYS.h 
    lib/libc/ia64        SYS.h 
    lib/libc/sparc64     SYS.h 
  Log:
  Adjust the syscall stub macros to be consistent in their meaning.  In
  particular:
  SYSCALL() makes a syscall, with errno handling, and continues execution
  directly after the macro in the non-error case.
  RSYSCALL() is just like SYSCALL(), but returns after success.
  Both SYSCALL(name) and RSYSCALL(name) export  "__sys_name" as a strong
  symbol, with "_name" and "name" as weak aliases.
  PSEUDO() is just like RSYSCALL(), but skipping the "name" weak alias.  It
  still does "__sys_name" and "_name".
  
  Change i386 to add errno handling to PSEUDO.  The same for amd64 and
  sparc64, with appear to have copied the behavior.
  ia64 was correct (as was alpha).  Just remove some apparently unused
  variants of the macros. (untested!)
  I believe powerpc is correct.
  Fix arm to not export "name" from the PSEUDO case.  Remove apparently
  extra unused variants.  (untested!)
  
  The errno problem manifested on i386/amd64/sparc64 by having "PSEUDO"
  classified syscalls return without setting errno.  eg: "addr = mmap()"
  could return with "addr" = 22 instead of setting errno to 22 and
  returning -1.
  
  Approved by: re (kensmith)
  
  Revision  Changes    Path
  1.29      +9 -2      src/lib/libc/amd64/SYS.h
  1.4       +7 -14     src/lib/libc/arm/SYS.h
  1.26      +3 -2      src/lib/libc/i386/SYS.h
  1.5       +0 -14     src/lib/libc/ia64/SYS.h
  1.6       +1 -2      src/lib/libc/sparc64/SYS.h


More information about the cvs-src mailing list