mirror of https://github.com/python/cpython
Patch #488073: AtheOS port.
This commit is contained in:
parent
7981ce576c
commit
f90ae20354
|
@ -178,9 +178,9 @@ class build_ext (Command):
|
|||
if os.name == 'os2':
|
||||
self.library_dirs.append(os.path.join(sys.exec_prefix, 'Config'))
|
||||
|
||||
# for extensions under Cygwin Python's library directory must be
|
||||
# for extensions under Cygwin and AtheOS Python's library directory must be
|
||||
# appended to library_dirs
|
||||
if sys.platform[:6] == 'cygwin':
|
||||
if sys.platform[:6] == 'cygwin' or sys.platform[:6] == 'atheos':
|
||||
if string.find(sys.executable, sys.exec_prefix) != -1:
|
||||
# building third party extensions
|
||||
self.library_dirs.append(os.path.join(sys.prefix, "lib",
|
||||
|
@ -656,6 +656,22 @@ class build_ext (Command):
|
|||
# don't extend ext.libraries, it may be shared with other
|
||||
# extensions, it is a reference to the original list
|
||||
return ext.libraries + [pythonlib]
|
||||
elif sys.platform[:6] == "atheos":
|
||||
from distutils import sysconfig
|
||||
|
||||
template = "python%d.%d"
|
||||
pythonlib = (template %
|
||||
(sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff))
|
||||
# Get SHLIBS from Makefile
|
||||
extra = []
|
||||
for lib in sysconfig.get_config_var('SHLIBS').split():
|
||||
if lib.startswith('-l'):
|
||||
extra.append(lib[2:])
|
||||
else:
|
||||
extra.append(lib)
|
||||
# don't extend ext.libraries, it may be shared with other
|
||||
# extensions, it is a reference to the original list
|
||||
return ext.libraries + [pythonlib, "m"] + extra
|
||||
else:
|
||||
return ext.libraries
|
||||
|
||||
|
|
|
@ -0,0 +1,945 @@
|
|||
# Generated by h2py from /include/netinet/in.h
|
||||
_NETINET_IN_H = 1
|
||||
|
||||
# Included from features.h
|
||||
_FEATURES_H = 1
|
||||
__USE_ANSI = 1
|
||||
__FAVOR_BSD = 1
|
||||
_ISOC9X_SOURCE = 1
|
||||
_POSIX_SOURCE = 1
|
||||
_POSIX_C_SOURCE = 199506L
|
||||
_XOPEN_SOURCE = 500
|
||||
_XOPEN_SOURCE_EXTENDED = 1
|
||||
_LARGEFILE64_SOURCE = 1
|
||||
_BSD_SOURCE = 1
|
||||
_SVID_SOURCE = 1
|
||||
_BSD_SOURCE = 1
|
||||
_SVID_SOURCE = 1
|
||||
__USE_ISOC9X = 1
|
||||
_POSIX_SOURCE = 1
|
||||
_POSIX_C_SOURCE = 2
|
||||
_POSIX_C_SOURCE = 199506L
|
||||
__USE_POSIX = 1
|
||||
__USE_POSIX2 = 1
|
||||
__USE_POSIX199309 = 1
|
||||
__USE_POSIX199506 = 1
|
||||
__USE_XOPEN = 1
|
||||
__USE_XOPEN_EXTENDED = 1
|
||||
__USE_UNIX98 = 1
|
||||
_LARGEFILE_SOURCE = 1
|
||||
__USE_XOPEN_EXTENDED = 1
|
||||
__USE_LARGEFILE = 1
|
||||
__USE_LARGEFILE64 = 1
|
||||
__USE_FILE_OFFSET64 = 1
|
||||
__USE_MISC = 1
|
||||
__USE_BSD = 1
|
||||
__USE_SVID = 1
|
||||
__USE_GNU = 1
|
||||
__USE_REENTRANT = 1
|
||||
__STDC_IEC_559__ = 1
|
||||
__STDC_IEC_559_COMPLEX__ = 1
|
||||
__GNU_LIBRARY__ = 6
|
||||
__GLIBC__ = 2
|
||||
__GLIBC_MINOR__ = 1
|
||||
|
||||
# Included from sys/cdefs.h
|
||||
_SYS_CDEFS_H = 1
|
||||
def __PMT(args): return args
|
||||
|
||||
def __P(args): return args
|
||||
|
||||
def __PMT(args): return args
|
||||
|
||||
def __P(args): return ()
|
||||
|
||||
def __PMT(args): return ()
|
||||
|
||||
def __STRING(x): return #x
|
||||
|
||||
def __STRING(x): return "x"
|
||||
|
||||
def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
|
||||
|
||||
def __attribute__(xyz): return
|
||||
|
||||
__USE_EXTERN_INLINES = 1
|
||||
|
||||
# Included from gnu/stubs.h
|
||||
|
||||
# Included from limits.h
|
||||
_LIBC_LIMITS_H_ = 1
|
||||
|
||||
# Included from bits/posix1_lim.h
|
||||
_BITS_POSIX1_LIM_H = 1
|
||||
_POSIX_AIO_LISTIO_MAX = 2
|
||||
_POSIX_AIO_MAX = 1
|
||||
_POSIX_ARG_MAX = 4096
|
||||
_POSIX_CHILD_MAX = 6
|
||||
_POSIX_DELAYTIMER_MAX = 32
|
||||
_POSIX_LINK_MAX = 8
|
||||
_POSIX_MAX_CANON = 255
|
||||
_POSIX_MAX_INPUT = 255
|
||||
_POSIX_MQ_OPEN_MAX = 8
|
||||
_POSIX_MQ_PRIO_MAX = 32
|
||||
_POSIX_NGROUPS_MAX = 0
|
||||
_POSIX_OPEN_MAX = 16
|
||||
_POSIX_FD_SETSIZE = _POSIX_OPEN_MAX
|
||||
_POSIX_NAME_MAX = 14
|
||||
_POSIX_PATH_MAX = 255
|
||||
_POSIX_PIPE_BUF = 512
|
||||
_POSIX_RTSIG_MAX = 8
|
||||
_POSIX_SEM_NSEMS_MAX = 256
|
||||
_POSIX_SEM_VALUE_MAX = 32767
|
||||
_POSIX_SIGQUEUE_MAX = 32
|
||||
_POSIX_SSIZE_MAX = 32767
|
||||
_POSIX_STREAM_MAX = 8
|
||||
_POSIX_TZNAME_MAX = 3
|
||||
_POSIX_QLIMIT = 1
|
||||
_POSIX_HIWAT = _POSIX_PIPE_BUF
|
||||
_POSIX_UIO_MAXIOV = 16
|
||||
_POSIX_TTY_NAME_MAX = 9
|
||||
_POSIX_TIMER_MAX = 32
|
||||
_POSIX_LOGIN_NAME_MAX = 9
|
||||
_POSIX_CLOCKRES_MIN = 20000000
|
||||
|
||||
# Included from bits/local_lim.h
|
||||
|
||||
# Included from posix/limits.h
|
||||
CHAR_BIT = 8
|
||||
CHAR_MAX = 127
|
||||
CHAR_MIN = (-128)
|
||||
INT_MAX = 2147483647
|
||||
INT_MIN = (-2147483647-1)
|
||||
LONG_MAX = 2147483647L
|
||||
LONG_MIN = (-2147483647L-1L)
|
||||
SCHAR_MAX = 127
|
||||
SCHAR_MIN = (-128)
|
||||
SHRT_MAX = 32767
|
||||
SHRT_MIN = (-32768)
|
||||
UCHAR_MAX = 255
|
||||
USHRT_MAX = 65535
|
||||
_POSIX_ARG_MAX = 131072
|
||||
_POSIX_CHILD_MAX = 4096
|
||||
_POSIX_LINK_MAX = 1
|
||||
_POSIX_MAX_CANON = 126
|
||||
_POSIX_MAX_INPUT = 126
|
||||
_POSIX_NAME_MAX = 256
|
||||
_POSIX_NGROUPS_MAX = 32
|
||||
_POSIX_OPEN_MAX = 256
|
||||
_POSIX_PATH_MAX = 255
|
||||
_POSIX_PIPE_BUF = 512
|
||||
_POSIX_SSIZE_MAX = 2147483647
|
||||
_POSIX_STREAM_MAX = 256
|
||||
_POSIX_TZNAME_MAX = 5
|
||||
NGROUPS_MAX = 32
|
||||
ARG_MAX = 131072
|
||||
CHILD_MAX = 4096
|
||||
OPEN_MAX = 256
|
||||
LINK_MAX = 1
|
||||
MAX_CANON = 126
|
||||
MAX_INPUT = 126
|
||||
NAME_MAX = 255
|
||||
PATH_MAX = 4096
|
||||
PIPE_BUF = 4096
|
||||
SSIZE_MAX = 2147483647
|
||||
MAXSYMLINKS = 16
|
||||
AIO_PRIO_DELTA_MAX = 20
|
||||
SSIZE_MAX = INT_MAX
|
||||
NGROUPS_MAX = _POSIX_NGROUPS_MAX
|
||||
|
||||
# Included from bits/posix2_lim.h
|
||||
_BITS_POSIX2_LIM_H = 1
|
||||
_POSIX2_BC_BASE_MAX = 99
|
||||
_POSIX2_BC_DIM_MAX = 2048
|
||||
_POSIX2_BC_SCALE_MAX = 99
|
||||
_POSIX2_BC_STRING_MAX = 1000
|
||||
_POSIX2_COLL_WEIGHTS_MAX = 255
|
||||
_POSIX2_EQUIV_CLASS_MAX = 255
|
||||
_POSIX2_EXPR_NEST_MAX = 32
|
||||
_POSIX2_LINE_MAX = 2048
|
||||
_POSIX2_RE_DUP_MAX = 255
|
||||
_POSIX2_CHARCLASS_NAME_MAX = 2048
|
||||
BC_BASE_MAX = _POSIX2_BC_BASE_MAX
|
||||
BC_DIM_MAX = _POSIX2_BC_DIM_MAX
|
||||
BC_SCALE_MAX = _POSIX2_BC_SCALE_MAX
|
||||
BC_STRING_MAX = _POSIX2_BC_STRING_MAX
|
||||
COLL_WEIGHTS_MAX = _POSIX2_COLL_WEIGHTS_MAX
|
||||
EQUIV_CLASS_MAX = _POSIX2_EQUIV_CLASS_MAX
|
||||
EXPR_NEST_MAX = _POSIX2_EXPR_NEST_MAX
|
||||
LINE_MAX = _POSIX2_LINE_MAX
|
||||
RE_DUP_MAX = _POSIX2_RE_DUP_MAX
|
||||
CHARCLASS_NAME_MAX = _POSIX2_CHARCLASS_NAME_MAX
|
||||
|
||||
# Included from bits/xopen_lim.h
|
||||
_XOPEN_LIM_H = 1
|
||||
|
||||
# Included from bits/stdio_lim.h
|
||||
L_tmpnam = 20
|
||||
TMP_MAX = 238328
|
||||
FILENAME_MAX = 4096
|
||||
L_ctermid = 9
|
||||
L_cuserid = 9
|
||||
FOPEN_MAX = 256
|
||||
STREAM_MAX = FOPEN_MAX
|
||||
TZNAME_MAX = _POSIX_TZNAME_MAX
|
||||
_XOPEN_IOV_MAX = _POSIX_UIO_MAXIOV
|
||||
NL_ARGMAX = _POSIX_ARG_MAX
|
||||
NL_LANGMAX = _POSIX2_LINE_MAX
|
||||
NL_MSGMAX = INT_MAX
|
||||
NL_NMAX = INT_MAX
|
||||
NL_SETMAX = INT_MAX
|
||||
NL_TEXTMAX = INT_MAX
|
||||
NZERO = 20
|
||||
MB_LEN_MAX = 6
|
||||
_LIMITS_H = 1
|
||||
CHAR_BIT = 8
|
||||
SCHAR_MIN = (-128)
|
||||
SCHAR_MAX = 127
|
||||
UCHAR_MAX = 255
|
||||
CHAR_MIN = 0
|
||||
CHAR_MAX = UCHAR_MAX
|
||||
CHAR_MIN = SCHAR_MIN
|
||||
CHAR_MAX = SCHAR_MAX
|
||||
SHRT_MIN = (-32768)
|
||||
SHRT_MAX = 32767
|
||||
USHRT_MAX = 65535
|
||||
INT_MIN = (-INT_MAX - 1)
|
||||
INT_MAX = 2147483647
|
||||
UINT_MAX = 4294967295
|
||||
LONG_MAX = 9223372036854775807L
|
||||
LONG_MAX = 2147483647L
|
||||
LONG_MIN = (-LONG_MAX - 1L)
|
||||
ULONG_MAX = 4294967295L
|
||||
|
||||
# Included from stdint.h
|
||||
_STDINT_H = 1
|
||||
|
||||
# Included from bits/wordsize.h
|
||||
__WORDSIZE = 32
|
||||
def __INT64_C(c): return c ## L
|
||||
|
||||
def __UINT64_C(c): return c ## UL
|
||||
|
||||
def __INT64_C(c): return c ## LL
|
||||
|
||||
def __UINT64_C(c): return c ## ULL
|
||||
|
||||
INT8_MIN = (-128)
|
||||
INT16_MIN = (-32767-1)
|
||||
INT32_MIN = (-2147483647-1)
|
||||
INT64_MIN = (-__INT64_C(9223372036854775807)-1)
|
||||
INT8_MAX = (127)
|
||||
INT16_MAX = (32767)
|
||||
INT32_MAX = (2147483647)
|
||||
INT64_MAX = (__INT64_C(9223372036854775807))
|
||||
UINT64_MAX = (__UINT64_C(18446744073709551615))
|
||||
INT_LEAST8_MIN = (-128)
|
||||
INT_LEAST16_MIN = (-32767-1)
|
||||
INT_LEAST32_MIN = (-2147483647-1)
|
||||
INT_LEAST64_MIN = (-__INT64_C(9223372036854775807)-1)
|
||||
INT_LEAST8_MAX = (127)
|
||||
INT_LEAST16_MAX = (32767)
|
||||
INT_LEAST32_MAX = (2147483647)
|
||||
INT_LEAST64_MAX = (__INT64_C(9223372036854775807))
|
||||
UINT_LEAST64_MAX = (__UINT64_C(18446744073709551615))
|
||||
INT_FAST8_MIN = (-128)
|
||||
INT_FAST16_MIN = (-9223372036854775807L-1)
|
||||
INT_FAST32_MIN = (-9223372036854775807L-1)
|
||||
INT_FAST16_MIN = (-2147483647-1)
|
||||
INT_FAST32_MIN = (-2147483647-1)
|
||||
INT_FAST64_MIN = (-__INT64_C(9223372036854775807)-1)
|
||||
INT_FAST8_MAX = (127)
|
||||
INT_FAST16_MAX = (9223372036854775807L)
|
||||
INT_FAST32_MAX = (9223372036854775807L)
|
||||
INT_FAST16_MAX = (2147483647)
|
||||
INT_FAST32_MAX = (2147483647)
|
||||
INT_FAST64_MAX = (__INT64_C(9223372036854775807))
|
||||
UINT_FAST64_MAX = (__UINT64_C(18446744073709551615))
|
||||
INTPTR_MIN = (-9223372036854775807L-1)
|
||||
INTPTR_MAX = (9223372036854775807L)
|
||||
INTPTR_MIN = (-2147483647-1)
|
||||
INTPTR_MAX = (2147483647)
|
||||
INTMAX_MIN = (-__INT64_C(9223372036854775807)-1)
|
||||
INTMAX_MAX = (__INT64_C(9223372036854775807))
|
||||
UINTMAX_MAX = (__UINT64_C(18446744073709551615))
|
||||
PTRDIFF_MIN = (-9223372036854775807L-1)
|
||||
PTRDIFF_MAX = (9223372036854775807L)
|
||||
PTRDIFF_MIN = (-2147483647-1)
|
||||
PTRDIFF_MAX = (2147483647)
|
||||
SIG_ATOMIC_MIN = (-2147483647-1)
|
||||
SIG_ATOMIC_MAX = (2147483647)
|
||||
WCHAR_MIN = (-2147483647-1)
|
||||
WCHAR_MAX = (2147483647)
|
||||
WINT_MIN = (0)
|
||||
def INT8_C(c): return c
|
||||
|
||||
def INT16_C(c): return c
|
||||
|
||||
def INT32_C(c): return c
|
||||
|
||||
def INT64_C(c): return c ## L
|
||||
|
||||
def INT64_C(c): return c ## LL
|
||||
|
||||
def UINT8_C(c): return c ## U
|
||||
|
||||
def UINT16_C(c): return c ## U
|
||||
|
||||
def UINT32_C(c): return c ## U
|
||||
|
||||
def UINT64_C(c): return c ## UL
|
||||
|
||||
def UINT64_C(c): return c ## ULL
|
||||
|
||||
def INTMAX_C(c): return c ## L
|
||||
|
||||
def UINTMAX_C(c): return c ## UL
|
||||
|
||||
def INTMAX_C(c): return c ## LL
|
||||
|
||||
def UINTMAX_C(c): return c ## ULL
|
||||
|
||||
|
||||
# Included from sys/types.h
|
||||
_SYS_TYPES_H = 1
|
||||
|
||||
# Included from bits/types.h
|
||||
_BITS_TYPES_H = 1
|
||||
__FD_SETSIZE = 1024
|
||||
def __FDELT(d): return ((d) / __NFDBITS)
|
||||
|
||||
|
||||
# Included from bits/pthreadtypes.h
|
||||
|
||||
# Included from time.h
|
||||
_TIME_H = 1
|
||||
|
||||
# Included from bits/time.h
|
||||
|
||||
# Included from posix/time.h
|
||||
|
||||
# Included from posix/types.h
|
||||
MAXHOSTNAMELEN = 64
|
||||
FD_SETSIZE = 1024
|
||||
CLOCKS_PER_SEC = 1000000
|
||||
_BITS_TIME_H = 1
|
||||
CLOCKS_PER_SEC = 1000000
|
||||
CLK_TCK = 100
|
||||
_STRUCT_TIMEVAL = 1
|
||||
CLK_TCK = CLOCKS_PER_SEC
|
||||
__clock_t_defined = 1
|
||||
__time_t_defined = 1
|
||||
__timespec_defined = 1
|
||||
def __isleap(year): return \
|
||||
|
||||
__BIT_TYPES_DEFINED__ = 1
|
||||
|
||||
# Included from endian.h
|
||||
_ENDIAN_H = 1
|
||||
__LITTLE_ENDIAN = 1234
|
||||
__BIG_ENDIAN = 4321
|
||||
__PDP_ENDIAN = 3412
|
||||
|
||||
# Included from bits/endian.h
|
||||
__BYTE_ORDER = __LITTLE_ENDIAN
|
||||
__FLOAT_WORD_ORDER = __BYTE_ORDER
|
||||
LITTLE_ENDIAN = __LITTLE_ENDIAN
|
||||
BIG_ENDIAN = __BIG_ENDIAN
|
||||
PDP_ENDIAN = __PDP_ENDIAN
|
||||
BYTE_ORDER = __BYTE_ORDER
|
||||
|
||||
# Included from sys/select.h
|
||||
_SYS_SELECT_H = 1
|
||||
|
||||
# Included from bits/select.h
|
||||
def __FD_ZERO(fdsp): return \
|
||||
|
||||
def __FD_ZERO(set): return \
|
||||
|
||||
|
||||
# Included from bits/sigset.h
|
||||
_SIGSET_H_types = 1
|
||||
_SIGSET_H_fns = 1
|
||||
def __sigmask(sig): return \
|
||||
|
||||
def __sigemptyset(set): return \
|
||||
|
||||
def __sigfillset(set): return \
|
||||
|
||||
def __sigisemptyset(set): return \
|
||||
|
||||
FD_SETSIZE = __FD_SETSIZE
|
||||
def FD_ZERO(fdsetp): return __FD_ZERO (fdsetp)
|
||||
|
||||
|
||||
# Included from sys/sysmacros.h
|
||||
_SYS_SYSMACROS_H = 1
|
||||
def major(dev): return ( (( (dev) >> 8) & 0xff))
|
||||
|
||||
def minor(dev): return ( ((dev) & 0xff))
|
||||
|
||||
|
||||
# Included from bits/socket.h
|
||||
PF_UNSPEC = 0
|
||||
PF_LOCAL = 1
|
||||
PF_UNIX = PF_LOCAL
|
||||
PF_FILE = PF_LOCAL
|
||||
PF_INET = 2
|
||||
PF_AX25 = 3
|
||||
PF_IPX = 4
|
||||
PF_APPLETALK = 5
|
||||
PF_NETROM = 6
|
||||
PF_BRIDGE = 7
|
||||
PF_ATMPVC = 8
|
||||
PF_X25 = 9
|
||||
PF_INET6 = 10
|
||||
PF_ROSE = 11
|
||||
PF_DECnet = 12
|
||||
PF_NETBEUI = 13
|
||||
PF_SECURITY = 14
|
||||
PF_KEY = 15
|
||||
PF_NETLINK = 16
|
||||
PF_ROUTE = PF_NETLINK
|
||||
PF_PACKET = 17
|
||||
PF_ASH = 18
|
||||
PF_ECONET = 19
|
||||
PF_ATMSVC = 20
|
||||
PF_SNA = 22
|
||||
PF_IRDA = 23
|
||||
PF_MAX = 32
|
||||
AF_UNSPEC = PF_UNSPEC
|
||||
AF_LOCAL = PF_LOCAL
|
||||
AF_UNIX = PF_UNIX
|
||||
AF_FILE = PF_FILE
|
||||
AF_INET = PF_INET
|
||||
AF_AX25 = PF_AX25
|
||||
AF_IPX = PF_IPX
|
||||
AF_APPLETALK = PF_APPLETALK
|
||||
AF_NETROM = PF_NETROM
|
||||
AF_BRIDGE = PF_BRIDGE
|
||||
AF_ATMPVC = PF_ATMPVC
|
||||
AF_X25 = PF_X25
|
||||
AF_INET6 = PF_INET6
|
||||
AF_ROSE = PF_ROSE
|
||||
AF_DECnet = PF_DECnet
|
||||
AF_NETBEUI = PF_NETBEUI
|
||||
AF_SECURITY = PF_SECURITY
|
||||
AF_KEY = PF_KEY
|
||||
AF_NETLINK = PF_NETLINK
|
||||
AF_ROUTE = PF_ROUTE
|
||||
AF_PACKET = PF_PACKET
|
||||
AF_ASH = PF_ASH
|
||||
AF_ECONET = PF_ECONET
|
||||
AF_ATMSVC = PF_ATMSVC
|
||||
AF_SNA = PF_SNA
|
||||
AF_IRDA = PF_IRDA
|
||||
AF_MAX = PF_MAX
|
||||
SOL_RAW = 255
|
||||
SOL_DECNET = 261
|
||||
SOL_X25 = 262
|
||||
SOL_PACKET = 263
|
||||
SOL_ATM = 264
|
||||
SOL_AAL = 265
|
||||
SOL_IRDA = 266
|
||||
SOMAXCONN = 128
|
||||
|
||||
# Included from bits/sockaddr.h
|
||||
_BITS_SOCKADDR_H = 1
|
||||
def __SOCKADDR_COMMON(sa_prefix): return \
|
||||
|
||||
_SS_SIZE = 128
|
||||
def CMSG_FIRSTHDR(mhdr): return \
|
||||
|
||||
|
||||
# Included from atheos/socket.h
|
||||
|
||||
# Included from atheos/types.h
|
||||
OS_NAME_LENGTH = 64
|
||||
TRUE = 1
|
||||
FALSE = 0
|
||||
|
||||
# Included from atheos/filesystem.h
|
||||
|
||||
# Included from atheos/atomic.h
|
||||
|
||||
# Included from atheos/typedefs.h
|
||||
|
||||
# Included from atheos/fs_attribs.h
|
||||
|
||||
# Included from atheos/kernel.h
|
||||
|
||||
# Included from atheos/kdebug.h
|
||||
|
||||
# Included from atheos/threads.h
|
||||
TF_DEADLOCK = 0x0001
|
||||
DB_PACKET_SIZE = 128
|
||||
DB_PORT_COUNT = 16
|
||||
DBP_PRINTK = 0
|
||||
DBP_DEBUGGER = 2
|
||||
|
||||
# Included from atheos/stdlib.h
|
||||
|
||||
# Included from atheos/string.h
|
||||
def COMMON(x): return \
|
||||
|
||||
def COMMON(x): return \
|
||||
|
||||
|
||||
# Included from atheos/schedule.h
|
||||
|
||||
# Included from atheos/timer.h
|
||||
|
||||
# Included from posix/resource.h
|
||||
RUSAGE_SELF = 0
|
||||
RUSAGE_CHILDREN = -1
|
||||
RLIMIT_CPU = 0
|
||||
RLIMIT_FSIZE = 1
|
||||
RLIMIT_DATA = 2
|
||||
RLIMIT_STACK = 3
|
||||
RLIMIT_CORE = 4
|
||||
RLIMIT_RSS = 5
|
||||
RLIMIT_MEMLOCK = 6
|
||||
RLIMIT_NPROC = 7
|
||||
RLIMIT_NOFILE = 8
|
||||
RLIMIT_AS = 9
|
||||
RLIM_NLIMITS = 10
|
||||
|
||||
# Included from atheos/v86.h
|
||||
|
||||
# Included from atheos/areas.h
|
||||
MEMF_REAL = 0x00000002
|
||||
MEMF_USER = 0x00000004
|
||||
MEMF_BUFFER = 0x00000008
|
||||
MEMF_KERNEL = 0x00000010
|
||||
MEMF_OKTOFAILHACK = 0x00000020
|
||||
MEMF_PRI_MASK = 0x000000ff
|
||||
MEMF_NOBLOCK = 0x00000100
|
||||
MEMF_CLEAR = 0x00010000
|
||||
MEMF_LOCKED = 0x10000000
|
||||
PAGE_SHIFT = 12
|
||||
PGDIR_SHIFT = 22
|
||||
def PAGE_ALIGN(addr): return (((addr)+PAGE_SIZE-1)&PAGE_MASK)
|
||||
|
||||
AREA_NO_LOCK = 0
|
||||
AREA_LAZY_LOCK = 1
|
||||
AREA_FULL_LOCK = 2
|
||||
AREA_CONTIGUOUS = 3
|
||||
AREA_READ = 0x00000001
|
||||
AREA_WRITE = 0x00000002
|
||||
AREA_EXEC = 0x00000004
|
||||
AREA_FULL_ACCESS = (AREA_READ | AREA_WRITE | AREA_EXEC)
|
||||
AREA_KERNEL = 0x00000008
|
||||
AREA_UNMAP_PHYS = 0x00000010
|
||||
AREA_ANY_ADDRESS = 0x00000000
|
||||
AREA_EXACT_ADDRESS = 0x00000100
|
||||
AREA_BASE_ADDRESS = 0x00000200
|
||||
AREA_CLONE_ADDRESS = 0x00000300
|
||||
AREA_ADDR_SPEC_MASK = 0x00000f00
|
||||
AREA_TOP_DOWN = 0x00001000
|
||||
AREA_REMAPPED = 0x0020
|
||||
AREA_SHARED = 0x0040
|
||||
AREA_GROWSDOWN = 0x0080
|
||||
AREA_FIRST_KERNEL_ADDRESS = 0x00100000
|
||||
AREA_LAST_KERNEL_ADDRESS = 0x7fffffff
|
||||
AREA_FIRST_USER_ADDRESS = 0x80000000
|
||||
AREA_LAST_USER_ADDRESS = 0xffffffff
|
||||
MAX_CPU_COUNT = 16
|
||||
def kfree(p): return kassertw( __kfree(p) == 0 )
|
||||
|
||||
|
||||
# Included from posix/dirent.h
|
||||
MAXNAMLEN = NAME_MAX
|
||||
MAXNAMLEN = 255
|
||||
|
||||
# Included from dirent.h
|
||||
_DIRENT_H = 1
|
||||
|
||||
# Included from bits/dirent.h
|
||||
def _D_ALLOC_NAMLEN(d): return (_D_EXACT_NAMLEN (d) + 1)
|
||||
|
||||
def IFTODT(mode): return (((mode) & 0170000) >> 12)
|
||||
|
||||
def DTTOIF(dirtype): return ((dirtype) << 12)
|
||||
|
||||
def dirfd(dirp): return _DIR_dirfd (dirp)
|
||||
|
||||
MAXNAMLEN = NAME_MAX
|
||||
MAXNAMLEN = 255
|
||||
|
||||
# Included from posix/stat.h
|
||||
S_IFMT = 00170000
|
||||
S_IFSOCK = 0140000
|
||||
S_IFLNK = 0120000
|
||||
S_IFREG = 0100000
|
||||
S_IFBLK = 0060000
|
||||
S_IFDIR = 0040000
|
||||
S_IFCHR = 0020000
|
||||
S_IFIFO = 0010000
|
||||
S_ISUID = 0004000
|
||||
S_ISGID = 0002000
|
||||
S_ISVTX = 0001000
|
||||
def S_ISLNK(m): return (((m) & S_IFMT) == S_IFLNK)
|
||||
|
||||
def S_ISREG(m): return (((m) & S_IFMT) == S_IFREG)
|
||||
|
||||
def S_ISDIR(m): return (((m) & S_IFMT) == S_IFDIR)
|
||||
|
||||
def S_ISCHR(m): return (((m) & S_IFMT) == S_IFCHR)
|
||||
|
||||
def S_ISBLK(m): return (((m) & S_IFMT) == S_IFBLK)
|
||||
|
||||
def S_ISFIFO(m): return (((m) & S_IFMT) == S_IFIFO)
|
||||
|
||||
def S_ISSOCK(m): return (((m) & S_IFMT) == S_IFSOCK)
|
||||
|
||||
S_IRWXU = 00700
|
||||
S_IRUSR = 00400
|
||||
S_IWUSR = 00200
|
||||
S_IXUSR = 00100
|
||||
S_IRWXG = 00070
|
||||
S_IRGRP = 00040
|
||||
S_IWGRP = 00020
|
||||
S_IXGRP = 00010
|
||||
S_IRWXO = 00007
|
||||
S_IROTH = 00004
|
||||
S_IWOTH = 00002
|
||||
S_IXOTH = 00001
|
||||
S_IRWXUGO = (S_IRWXU|S_IRWXG|S_IRWXO)
|
||||
S_IALLUGO = (S_ISUID|S_ISGID|S_ISVTX|S_IRWXUGO)
|
||||
S_IRUGO = (S_IRUSR|S_IRGRP|S_IROTH)
|
||||
S_IWUGO = (S_IWUSR|S_IWGRP|S_IWOTH)
|
||||
S_IXUGO = (S_IXUSR|S_IXGRP|S_IXOTH)
|
||||
_STAT_VER_KERNEL = 0
|
||||
|
||||
# Included from posix/fcntl.h
|
||||
O_ACCMODE = 0003
|
||||
O_RWMASK = O_ACCMODE
|
||||
O_RDONLY = 00
|
||||
O_WRONLY = 01
|
||||
O_RDWR = 02
|
||||
O_CREAT = 0100
|
||||
O_EXCL = 0200
|
||||
O_NOCTTY = 0400
|
||||
O_TRUNC = 01000
|
||||
O_APPEND = 02000
|
||||
O_NONBLOCK = 04000
|
||||
O_NDELAY = O_NONBLOCK
|
||||
O_SYNC = 010000
|
||||
O_FSYNC = O_SYNC
|
||||
O_ASYNC = 020000
|
||||
FASYNC = O_ASYNC
|
||||
O_DIRECTORY = 040000
|
||||
O_NOTRAVERSE = 0100000
|
||||
O_NOFOLLOW = O_NOTRAVERSE
|
||||
F_DUPFD = 0
|
||||
F_GETFD = 1
|
||||
F_SETFD = 2
|
||||
F_GETFL = 3
|
||||
F_SETFL = 4
|
||||
F_GETLK = 5
|
||||
F_SETLK = 6
|
||||
F_SETLKW = 7
|
||||
F_SETOWN = 8
|
||||
F_GETOWN = 9
|
||||
F_SETSIG = 10
|
||||
F_GETSIG = 11
|
||||
F_COPYFD = 12
|
||||
FD_CLOEXEC = 1
|
||||
F_RDLCK = 0
|
||||
F_WRLCK = 1
|
||||
F_UNLCK = 2
|
||||
F_EXLCK = 4
|
||||
F_SHLCK = 8
|
||||
LOCK_SH = 1
|
||||
LOCK_EX = 2
|
||||
LOCK_NB = 4
|
||||
LOCK_UN = 8
|
||||
|
||||
# Included from posix/uio.h
|
||||
UIO_FASTIOV = 8
|
||||
UIO_MAXIOV = 1024
|
||||
MNTF_READONLY = 0x0001
|
||||
FS_IS_READONLY = 0x00000001
|
||||
FS_IS_REMOVABLE = 0x00000002
|
||||
FS_IS_PERSISTENT = 0x00000004
|
||||
FS_IS_SHARED = 0x00000008
|
||||
FS_IS_BLOCKBASED = 0x00000010
|
||||
FS_CAN_MOUNT = 0x00000020
|
||||
FS_HAS_MIME = 0x00010000
|
||||
FS_HAS_ATTR = 0x00020000
|
||||
FS_HAS_QUERY = 0x00040000
|
||||
FSINFO_VERSION = 1
|
||||
WSTAT_MODE = 0x0001
|
||||
WSTAT_UID = 0x0002
|
||||
WSTAT_GID = 0x0004
|
||||
WSTAT_SIZE = 0x0008
|
||||
WSTAT_ATIME = 0x0010
|
||||
WSTAT_MTIME = 0x0020
|
||||
WSTAT_CTIME = 0x0040
|
||||
WFSSTAT_NAME = 0x0001
|
||||
FSDRIVER_API_VERSION = 1
|
||||
|
||||
# Included from net/nettypes.h
|
||||
IP_ADR_LEN = 4
|
||||
INADDR_ANY = 0x00000000
|
||||
INADDR_BROADCAST = 0xffffffff
|
||||
INADDR_LOOPBACK = 0x7f000001
|
||||
def CMSG_ALIGN(len): return ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) )
|
||||
|
||||
PROT_SOCK = 1024
|
||||
SHUTDOWN_MASK = 3
|
||||
RCV_SHUTDOWN = 1
|
||||
SEND_SHUTDOWN = 2
|
||||
SOCK_STREAM = 1
|
||||
SOCK_DGRAM = 2
|
||||
SOCK_RAW = 3
|
||||
SOCK_RDM = 4
|
||||
SOCK_SEQPACKET = 5
|
||||
SOCK_PACKET = 10
|
||||
PF_UNSPEC = 0
|
||||
PF_LOCAL = 1
|
||||
PF_UNIX = PF_LOCAL
|
||||
PF_FILE = PF_LOCAL
|
||||
PF_INET = 2
|
||||
PF_AX25 = 3
|
||||
PF_IPX = 4
|
||||
PF_APPLETALK = 5
|
||||
PF_NETROM = 6
|
||||
PF_BRIDGE = 7
|
||||
PF_ATMPVC = 8
|
||||
PF_X25 = 9
|
||||
PF_INET6 = 10
|
||||
PF_ROSE = 11
|
||||
PF_DECnet = 12
|
||||
PF_NETBEUI = 13
|
||||
PF_SECURITY = 14
|
||||
PF_KEY = 15
|
||||
PF_NETLINK = 16
|
||||
PF_ROUTE = PF_NETLINK
|
||||
PF_PACKET = 17
|
||||
PF_ASH = 18
|
||||
PF_ECONET = 19
|
||||
PF_ATMSVC = 20
|
||||
PF_SNA = 22
|
||||
PF_IRDA = 23
|
||||
PF_MAX = 32
|
||||
AF_UNSPEC = PF_UNSPEC
|
||||
AF_LOCAL = PF_LOCAL
|
||||
AF_UNIX = PF_UNIX
|
||||
AF_FILE = PF_FILE
|
||||
AF_INET = PF_INET
|
||||
AF_AX25 = PF_AX25
|
||||
AF_IPX = PF_IPX
|
||||
AF_APPLETALK = PF_APPLETALK
|
||||
AF_NETROM = PF_NETROM
|
||||
AF_BRIDGE = PF_BRIDGE
|
||||
AF_ATMPVC = PF_ATMPVC
|
||||
AF_X25 = PF_X25
|
||||
AF_INET6 = PF_INET6
|
||||
AF_ROSE = PF_ROSE
|
||||
AF_DECnet = PF_DECnet
|
||||
AF_NETBEUI = PF_NETBEUI
|
||||
AF_SECURITY = PF_SECURITY
|
||||
AF_KEY = PF_KEY
|
||||
AF_NETLINK = PF_NETLINK
|
||||
AF_ROUTE = PF_ROUTE
|
||||
AF_PACKET = PF_PACKET
|
||||
AF_ASH = PF_ASH
|
||||
AF_ECONET = PF_ECONET
|
||||
AF_ATMSVC = PF_ATMSVC
|
||||
AF_SNA = PF_SNA
|
||||
AF_IRDA = PF_IRDA
|
||||
AF_MAX = PF_MAX
|
||||
PF_UNIX = 1
|
||||
AF_UNIX = PF_UNIX
|
||||
PF_INET = 2
|
||||
AF_INET = PF_INET
|
||||
SOMAXCONN = 128
|
||||
MSG_OOB = 1
|
||||
MSG_PEEK = 2
|
||||
MSG_DONTROUTE = 4
|
||||
MSG_PROXY = 16
|
||||
SOL_SOCKET = 1
|
||||
SO_DEBUG = 1
|
||||
SO_REUSEADDR = 2
|
||||
SO_TYPE = 3
|
||||
SO_ERROR = 4
|
||||
SO_DONTROUTE = 5
|
||||
SO_BROADCAST = 6
|
||||
SO_SNDBUF = 7
|
||||
SO_RCVBUF = 8
|
||||
SO_KEEPALIVE = 9
|
||||
SO_OOBINLINE = 10
|
||||
SO_NO_CHECK = 11
|
||||
SO_PRIORITY = 12
|
||||
SO_LINGER = 13
|
||||
SO_BSDCOMPAT = 14
|
||||
SOL_IP = 0
|
||||
SOL_IPX = 256
|
||||
SOL_AX25 = 257
|
||||
SOL_ATALK = 258
|
||||
SOL_NETROM = 259
|
||||
SOL_TCP = 6
|
||||
SOL_UDP = 17
|
||||
IP_TOS = 1
|
||||
IPTOS_LOWDELAY = 0x10
|
||||
IPTOS_THROUGHPUT = 0x08
|
||||
IPTOS_RELIABILITY = 0x04
|
||||
IPTOS_MINCOST = 0x02
|
||||
IP_TTL = 2
|
||||
IP_HDRINCL = 3
|
||||
IP_OPTIONS = 4
|
||||
IP_MULTICAST_IF = 32
|
||||
IP_MULTICAST_TTL = 33
|
||||
IP_MULTICAST_LOOP = 34
|
||||
IP_ADD_MEMBERSHIP = 35
|
||||
IP_DROP_MEMBERSHIP = 36
|
||||
TCP_NODELAY = 0x01
|
||||
TCP_MAXSEG = 0x02
|
||||
def IN_CLASSA(a): return ((( (a)) & 0x80000000) == 0)
|
||||
|
||||
IN_CLASSA_NET = 0xff000000
|
||||
IN_CLASSA_NSHIFT = 24
|
||||
IN_CLASSA_HOST = (0xffffffff & ~IN_CLASSA_NET)
|
||||
IN_CLASSA_MAX = 128
|
||||
def IN_CLASSB(a): return ((( (a)) & 0xc0000000) == 0x80000000)
|
||||
|
||||
IN_CLASSB_NET = 0xffff0000
|
||||
IN_CLASSB_NSHIFT = 16
|
||||
IN_CLASSB_HOST = (0xffffffff & ~IN_CLASSB_NET)
|
||||
IN_CLASSB_MAX = 65536
|
||||
def IN_CLASSC(a): return ((( (a)) & 0xe0000000) == 0xc0000000)
|
||||
|
||||
IN_CLASSC_NET = 0xffffff00
|
||||
IN_CLASSC_NSHIFT = 8
|
||||
IN_CLASSC_HOST = (0xffffffff & ~IN_CLASSC_NET)
|
||||
def IN_CLASSD(a): return ((( (a)) & 0xf0000000) == 0xe0000000)
|
||||
|
||||
def IN_MULTICAST(a): return IN_CLASSD(a)
|
||||
|
||||
def IN_EXPERIMENTAL(a): return ((( (a)) & 0xe0000000) == 0xe0000000)
|
||||
|
||||
def IN_BADCLASS(a): return ((( (a)) & 0xf0000000) == 0xf0000000)
|
||||
|
||||
INADDR_ANY = ( 0x00000000)
|
||||
INADDR_BROADCAST = ( 0xffffffff)
|
||||
INADDR_NONE = ( 0xffffffff)
|
||||
IN_LOOPBACKNET = 127
|
||||
INADDR_LOOPBACK = ( 0x7f000001)
|
||||
INADDR_UNSPEC_GROUP = ( 0xe0000000)
|
||||
INADDR_ALLHOSTS_GROUP = ( 0xe0000001)
|
||||
INADDR_ALLRTRS_GROUP = ( 0xe0000002)
|
||||
INADDR_MAX_LOCAL_GROUP = ( 0xe00000ff)
|
||||
INET_ADDRSTRLEN = 16
|
||||
INET6_ADDRSTRLEN = 46
|
||||
|
||||
# Included from bits/in.h
|
||||
IP_TOS = 1
|
||||
IP_TTL = 2
|
||||
IP_HDRINCL = 3
|
||||
IP_OPTIONS = 4
|
||||
IP_ROUTER_ALERT = 5
|
||||
IP_RECVOPTS = 6
|
||||
IP_RETOPTS = 7
|
||||
IP_PKTINFO = 8
|
||||
IP_PKTOPTIONS = 9
|
||||
IP_PMTUDISC = 10
|
||||
IP_MTU_DISCOVER = 10
|
||||
IP_RECVERR = 11
|
||||
IP_RECVTTL = 12
|
||||
IP_RECVTOS = 13
|
||||
IP_MULTICAST_IF = 32
|
||||
IP_MULTICAST_TTL = 33
|
||||
IP_MULTICAST_LOOP = 34
|
||||
IP_ADD_MEMBERSHIP = 35
|
||||
IP_DROP_MEMBERSHIP = 36
|
||||
IP_RECVRETOPTS = IP_RETOPTS
|
||||
IP_PMTUDISC_DONT = 0
|
||||
IP_PMTUDISC_WANT = 1
|
||||
IP_PMTUDISC_DO = 2
|
||||
SOL_IP = 0
|
||||
SOL_SOCKET = 1
|
||||
IP_DEFAULT_MULTICAST_TTL = 1
|
||||
IP_DEFAULT_MULTICAST_LOOP = 1
|
||||
IP_MAX_MEMBERSHIPS = 20
|
||||
IPV6_ADDRFORM = 1
|
||||
IPV6_PKTINFO = 2
|
||||
IPV6_HOPOPTS = 3
|
||||
IPV6_DSTOPTS = 4
|
||||
IPV6_RXSRCRT = 5
|
||||
IPV6_PKTOPTIONS = 6
|
||||
IPV6_CHECKSUM = 7
|
||||
IPV6_HOPLIMIT = 8
|
||||
IPV6_NEXTHOP = 9
|
||||
IPV6_AUTHHDR = 10
|
||||
IPV6_UNICAST_HOPS = 16
|
||||
IPV6_MULTICAST_IF = 17
|
||||
IPV6_MULTICAST_HOPS = 18
|
||||
IPV6_MULTICAST_LOOP = 19
|
||||
IPV6_ADD_MEMBERSHIP = 20
|
||||
IPV6_DROP_MEMBERSHIP = 21
|
||||
IPV6_ROUTER_ALERT = 22
|
||||
SCM_SRCRT = IPV6_RXSRCRT
|
||||
IPV6_RXHOPOPTS = IPV6_HOPOPTS
|
||||
IPV6_RXDSTOPTS = IPV6_DSTOPTS
|
||||
IPV6_PMTUDISC_DONT = 0
|
||||
IPV6_PMTUDISC_WANT = 1
|
||||
IPV6_PMTUDISC_DO = 2
|
||||
SOL_IPV6 = 41
|
||||
SOL_ICMPV6 = 58
|
||||
|
||||
# Included from bits/byteswap.h
|
||||
def __bswap_constant_16(x): return \
|
||||
|
||||
def __bswap_16(x): return \
|
||||
|
||||
def __bswap_16(x): return __bswap_constant_16 (x)
|
||||
|
||||
def __bswap_constant_32(x): return \
|
||||
|
||||
def __bswap_32(x): return \
|
||||
|
||||
def __bswap_32(x): return \
|
||||
|
||||
def __bswap_32(x): return __bswap_constant_32 (x)
|
||||
|
||||
def __bswap_64(x): return \
|
||||
|
||||
def ntohl(x): return (x)
|
||||
|
||||
def ntohs(x): return (x)
|
||||
|
||||
def htonl(x): return (x)
|
||||
|
||||
def htons(x): return (x)
|
||||
|
||||
def ntohl(x): return __bswap_32 (x)
|
||||
|
||||
def ntohs(x): return __bswap_16 (x)
|
||||
|
||||
def htonl(x): return __bswap_32 (x)
|
||||
|
||||
def htons(x): return __bswap_16 (x)
|
||||
|
||||
def IN6_IS_ADDR_UNSPECIFIED(a): return \
|
||||
|
||||
def IN6_IS_ADDR_LOOPBACK(a): return \
|
||||
|
||||
def IN6_IS_ADDR_LINKLOCAL(a): return \
|
||||
|
||||
def IN6_IS_ADDR_SITELOCAL(a): return \
|
||||
|
||||
def IN6_IS_ADDR_V4MAPPED(a): return \
|
||||
|
||||
def IN6_IS_ADDR_V4COMPAT(a): return \
|
||||
|
||||
def IN6_IS_ADDR_MC_NODELOCAL(a): return \
|
||||
|
||||
def IN6_IS_ADDR_MC_LINKLOCAL(a): return \
|
||||
|
||||
def IN6_IS_ADDR_MC_SITELOCAL(a): return \
|
||||
|
||||
def IN6_IS_ADDR_MC_ORGLOCAL(a): return \
|
||||
|
||||
def IN6_IS_ADDR_MC_GLOBAL(a): return \
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
# Generated by h2py from /include/sys/types.h
|
||||
_SYS_TYPES_H = 1
|
||||
|
||||
# Included from features.h
|
||||
_FEATURES_H = 1
|
||||
__USE_ANSI = 1
|
||||
__FAVOR_BSD = 1
|
||||
_ISOC9X_SOURCE = 1
|
||||
_POSIX_SOURCE = 1
|
||||
_POSIX_C_SOURCE = 199506L
|
||||
_XOPEN_SOURCE = 500
|
||||
_XOPEN_SOURCE_EXTENDED = 1
|
||||
_LARGEFILE64_SOURCE = 1
|
||||
_BSD_SOURCE = 1
|
||||
_SVID_SOURCE = 1
|
||||
_BSD_SOURCE = 1
|
||||
_SVID_SOURCE = 1
|
||||
__USE_ISOC9X = 1
|
||||
_POSIX_SOURCE = 1
|
||||
_POSIX_C_SOURCE = 2
|
||||
_POSIX_C_SOURCE = 199506L
|
||||
__USE_POSIX = 1
|
||||
__USE_POSIX2 = 1
|
||||
__USE_POSIX199309 = 1
|
||||
__USE_POSIX199506 = 1
|
||||
__USE_XOPEN = 1
|
||||
__USE_XOPEN_EXTENDED = 1
|
||||
__USE_UNIX98 = 1
|
||||
_LARGEFILE_SOURCE = 1
|
||||
__USE_XOPEN_EXTENDED = 1
|
||||
__USE_LARGEFILE = 1
|
||||
__USE_LARGEFILE64 = 1
|
||||
__USE_FILE_OFFSET64 = 1
|
||||
__USE_MISC = 1
|
||||
__USE_BSD = 1
|
||||
__USE_SVID = 1
|
||||
__USE_GNU = 1
|
||||
__USE_REENTRANT = 1
|
||||
__STDC_IEC_559__ = 1
|
||||
__STDC_IEC_559_COMPLEX__ = 1
|
||||
__GNU_LIBRARY__ = 6
|
||||
__GLIBC__ = 2
|
||||
__GLIBC_MINOR__ = 1
|
||||
|
||||
# Included from sys/cdefs.h
|
||||
_SYS_CDEFS_H = 1
|
||||
def __PMT(args): return args
|
||||
|
||||
def __P(args): return args
|
||||
|
||||
def __PMT(args): return args
|
||||
|
||||
def __P(args): return ()
|
||||
|
||||
def __PMT(args): return ()
|
||||
|
||||
def __STRING(x): return #x
|
||||
|
||||
def __STRING(x): return "x"
|
||||
|
||||
def __ASMNAME(cname): return __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
|
||||
|
||||
def __attribute__(xyz): return
|
||||
|
||||
__USE_EXTERN_INLINES = 1
|
||||
|
||||
# Included from gnu/stubs.h
|
||||
|
||||
# Included from bits/types.h
|
||||
_BITS_TYPES_H = 1
|
||||
__FD_SETSIZE = 1024
|
||||
def __FDELT(d): return ((d) / __NFDBITS)
|
||||
|
||||
|
||||
# Included from bits/pthreadtypes.h
|
||||
|
||||
# Included from time.h
|
||||
_TIME_H = 1
|
||||
|
||||
# Included from bits/time.h
|
||||
|
||||
# Included from posix/time.h
|
||||
|
||||
# Included from posix/types.h
|
||||
MAXHOSTNAMELEN = 64
|
||||
FD_SETSIZE = 1024
|
||||
CLOCKS_PER_SEC = 1000000
|
||||
_BITS_TIME_H = 1
|
||||
CLOCKS_PER_SEC = 1000000
|
||||
CLK_TCK = 100
|
||||
_STRUCT_TIMEVAL = 1
|
||||
CLK_TCK = CLOCKS_PER_SEC
|
||||
__clock_t_defined = 1
|
||||
__time_t_defined = 1
|
||||
__timespec_defined = 1
|
||||
def __isleap(year): return \
|
||||
|
||||
__BIT_TYPES_DEFINED__ = 1
|
||||
|
||||
# Included from endian.h
|
||||
_ENDIAN_H = 1
|
||||
__LITTLE_ENDIAN = 1234
|
||||
__BIG_ENDIAN = 4321
|
||||
__PDP_ENDIAN = 3412
|
||||
|
||||
# Included from bits/endian.h
|
||||
__BYTE_ORDER = __LITTLE_ENDIAN
|
||||
__FLOAT_WORD_ORDER = __BYTE_ORDER
|
||||
LITTLE_ENDIAN = __LITTLE_ENDIAN
|
||||
BIG_ENDIAN = __BIG_ENDIAN
|
||||
PDP_ENDIAN = __PDP_ENDIAN
|
||||
BYTE_ORDER = __BYTE_ORDER
|
||||
|
||||
# Included from sys/select.h
|
||||
_SYS_SELECT_H = 1
|
||||
|
||||
# Included from bits/select.h
|
||||
def __FD_ZERO(fdsp): return \
|
||||
|
||||
def __FD_ZERO(set): return \
|
||||
|
||||
|
||||
# Included from bits/sigset.h
|
||||
_SIGSET_H_types = 1
|
||||
_SIGSET_H_fns = 1
|
||||
def __sigmask(sig): return \
|
||||
|
||||
def __sigemptyset(set): return \
|
||||
|
||||
def __sigfillset(set): return \
|
||||
|
||||
def __sigisemptyset(set): return \
|
||||
|
||||
FD_SETSIZE = __FD_SETSIZE
|
||||
def FD_ZERO(fdsetp): return __FD_ZERO (fdsetp)
|
||||
|
||||
|
||||
# Included from sys/sysmacros.h
|
||||
_SYS_SYSMACROS_H = 1
|
||||
def major(dev): return ( (( (dev) >> 8) & 0xff))
|
||||
|
||||
def minor(dev): return ( ((dev) & 0xff))
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
#! /bin/sh
|
||||
set -v
|
||||
python$EXE ../../Tools/scripts/h2py.py -i '\(u_long\)' -i '\(uint32_t\)' -i '\(int\)' -i '\(unsigned int\)' /include/netinet/in.h /include/sys/types.h
|
|
@ -721,6 +721,34 @@ _expectations = {
|
|||
test_zipfile
|
||||
test_zlib
|
||||
""",
|
||||
'atheos':
|
||||
"""
|
||||
test_al
|
||||
test_cd
|
||||
test_cl
|
||||
test_curses
|
||||
test_dl
|
||||
test_email_codecs
|
||||
test_gdbm
|
||||
test_gl
|
||||
test_imgfile
|
||||
test_largefile
|
||||
test_linuxaudiodev
|
||||
test_locale
|
||||
test_mhlib
|
||||
test_mmap
|
||||
test_mpz
|
||||
test_nis
|
||||
test_poll
|
||||
test_popen2
|
||||
test_resource
|
||||
test_socket_ssl
|
||||
test_socketserver
|
||||
test_sunaudiodev
|
||||
test_unicode_file
|
||||
test_winreg
|
||||
test_winsound
|
||||
""",
|
||||
}
|
||||
|
||||
class _ExpectedSkips:
|
||||
|
|
|
@ -17,6 +17,9 @@ except AttributeError:
|
|||
else:
|
||||
start_len = "qq"
|
||||
|
||||
if sys.platform.startswith('atheos'):
|
||||
start_len = "qq"
|
||||
|
||||
if sys.platform in ('netbsd1', 'Darwin1.2', 'darwin',
|
||||
'freebsd2', 'freebsd3', 'freebsd4', 'freebsd5',
|
||||
'bsdos2', 'bsdos3', 'bsdos4',
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import sys
|
||||
import os
|
||||
from array import array
|
||||
|
||||
|
@ -88,7 +89,11 @@ f.close()
|
|||
if not f.closed:
|
||||
raise TestFailed, 'file.closed should be true'
|
||||
|
||||
for methodname in ['fileno', 'flush', 'isatty', 'read', 'readinto', 'readline', 'readlines', 'seek', 'tell', 'truncate', 'write', 'xreadlines' ]:
|
||||
methods = ['fileno', 'flush', 'isatty', 'read', 'readinto', 'readline', 'readlines', 'seek', 'tell', 'truncate', 'write', 'xreadlines' ]
|
||||
if sys.platform.startswith('atheos'):
|
||||
methods.remove('truncate')
|
||||
|
||||
for methodname in methods:
|
||||
method = getattr(f, methodname)
|
||||
try:
|
||||
method()
|
||||
|
|
|
@ -12,7 +12,7 @@ import os, StringIO
|
|||
import sys
|
||||
import mhlib
|
||||
|
||||
if sys.platform.startswith("win") or sys.platform=="riscos":
|
||||
if sys.platform.startswith("win") or sys.platform=="riscos" or sys.platform.startswith("atheos"):
|
||||
raise TestSkipped("test_mhlib skipped on %s -- "%sys.platform +
|
||||
"too many Unix assumptions")
|
||||
|
||||
|
|
|
@ -139,7 +139,13 @@ class StatAttributeTests(unittest.TestCase):
|
|||
return
|
||||
|
||||
import statvfs
|
||||
result = os.statvfs(self.fname)
|
||||
try:
|
||||
result = os.statvfs(self.fname)
|
||||
except OSError, e:
|
||||
# On AtheOS, glibc always returns ENOSYS
|
||||
import errno
|
||||
if e.errno == errno.ENOSYS:
|
||||
return
|
||||
|
||||
# Make sure direct access works
|
||||
self.assertEquals(result.f_bfree, result[statvfs.F_BFREE])
|
||||
|
|
|
@ -14,11 +14,12 @@ from test_support import TestSkipped
|
|||
|
||||
def main():
|
||||
print "Test popen2 module:"
|
||||
if sys.platform[:4] == 'beos' and __name__ != '__main__':
|
||||
if (sys.platform[:4] == 'beos' or sys.platform[:6] == 'atheos') \
|
||||
and __name__ != '__main__':
|
||||
# Locks get messed up or something. Generally we're supposed
|
||||
# to avoid mixing "posix" fork & exec with native threads, and
|
||||
# they may be right about that after all.
|
||||
raise TestSkipped, "popen2() doesn't work during import on BeOS"
|
||||
raise TestSkipped, "popen2() doesn't work during import on " + sys.platform
|
||||
try:
|
||||
from os import popen
|
||||
except ImportError:
|
||||
|
|
|
@ -146,6 +146,7 @@ LIBS= @LIBS@
|
|||
LIBM= @LIBM@
|
||||
LIBC= @LIBC@
|
||||
SYSLIBS= $(LIBM) $(LIBC)
|
||||
SHLIBS= @SHLIBS@
|
||||
|
||||
MAINOBJ= @MAINOBJ@
|
||||
THREADOBJ= @THREADOBJ@
|
||||
|
@ -341,7 +342,7 @@ $(LIBRARY): $(LIBRARY_OBJS)
|
|||
$(RANLIB) $@
|
||||
|
||||
libpython$(VERSION).so: $(LIBRARY_OBJS)
|
||||
$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(LIBC) $(LIBM)
|
||||
$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM)
|
||||
|
||||
libpython$(VERSION).sl: $(LIBRARY_OBJS)
|
||||
$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(LIBC) $(LIBM)
|
||||
|
|
|
@ -78,6 +78,7 @@ Mike Carlton
|
|||
Luke Kenneth Casson Leighton
|
||||
Donn Cave
|
||||
Per Cederqvist
|
||||
Octavian Cerna
|
||||
Jeffrey Chang
|
||||
Brad Chapman
|
||||
Greg Chapman
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
Python for AtheOS
|
||||
|
||||
|
||||
Before building:
|
||||
|
||||
Make sure you have shared versions of the libraries you want to use
|
||||
with Python. You will have to compile them yourself, or download
|
||||
precompiled packages.
|
||||
|
||||
Recommended libraries:
|
||||
|
||||
ncurses-4.2
|
||||
readline-4.2a
|
||||
zlib-1.1.4
|
||||
|
||||
Build:
|
||||
|
||||
$ ./configure --prefix=/usr/python
|
||||
$ make
|
||||
|
||||
Python is always built as a shared library, otherwise dynamic loading
|
||||
would not work.
|
||||
|
||||
Testing:
|
||||
|
||||
$ make test
|
||||
|
||||
Install:
|
||||
|
||||
# make install
|
||||
# pkgmanager -a /usr/python
|
||||
|
||||
|
||||
AtheOS issues:
|
||||
|
||||
- large file support: due to a stdio bug in glibc/libio, access to
|
||||
large files may not work correctly.
|
||||
fseeko() tries to seek to a negative offset.
|
||||
ftello() returns a negative offset, it looks like a 32->64bit
|
||||
sign-extension issue.
|
||||
The lowlevel functions (open, lseek, etc) are OK.
|
||||
- sockets: AF_UNIX is defined in the C library and in Python, but
|
||||
not implemented in the system.
|
||||
- select: poll is available in the C library, but does not work
|
||||
(It does not return POLLNVAL for bad fds and hangs).
|
||||
- posix: statvfs and fstatvfs always return ENOSYS.
|
||||
-
|
||||
- disabled modules:
|
||||
- mmap: not yet implemented in AtheOS
|
||||
- nis: broken (on an unconfigured system yp_get_default_domain()
|
||||
returns junk instead of error)
|
||||
- dl: dynamic loading doesn't work via dlopen()
|
||||
- resource: getrimit and setrlimit are not yet implemented
|
||||
|
||||
- if you are getting segmentation faults, you probably are low on memory.
|
||||
AtheOS doesn't handle very well an out-of-memory condition and
|
||||
simply SEGVs the process.
|
||||
|
||||
Tested on:
|
||||
|
||||
AtheOS-0.3.7
|
||||
gcc-2.95
|
||||
binutils-2.10
|
||||
make-3.78
|
||||
|
||||
|
||||
--
|
||||
Octavian Cerna <tavy@ylabs.com>
|
|
@ -311,6 +311,8 @@ C API
|
|||
|
||||
New platforms
|
||||
|
||||
- AtheOS is now supported.
|
||||
|
||||
- GNU/Hurd is now supported.
|
||||
|
||||
Tests
|
||||
|
|
|
@ -17,7 +17,9 @@ static PyObject *crypt_crypt(PyObject *self, PyObject *args)
|
|||
if (!PyArg_ParseTuple(args, "ss:crypt", &word, &salt)) {
|
||||
return NULL;
|
||||
}
|
||||
return PyString_FromString( crypt( word, salt ) );
|
||||
/* On some platforms (AtheOS) crypt returns NULL for an invalid
|
||||
salt. Return None in that case. XXX Maybe raise an exception? */
|
||||
return Py_BuildValue("s", crypt(word, salt));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
|
||||
/* Support for dynamic loading of extension modules */
|
||||
|
||||
#include <atheos/image.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "Python.h"
|
||||
#include "importdl.h"
|
||||
|
||||
|
||||
const struct filedescr _PyImport_DynLoadFiletab[] = {
|
||||
{".so", "rb", C_EXTENSION},
|
||||
{"module.so", "rb", C_EXTENSION},
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
|
||||
const char *pathname, FILE *fp)
|
||||
{
|
||||
void *p;
|
||||
int lib;
|
||||
char funcname[258];
|
||||
|
||||
if (Py_VerboseFlag)
|
||||
printf("load_library %s\n", pathname);
|
||||
|
||||
lib = load_library(pathname, 0);
|
||||
if (lib < 0) {
|
||||
char buf[512];
|
||||
if (Py_VerboseFlag)
|
||||
perror(pathname);
|
||||
PyOS_snprintf(buf, sizeof(buf), "Failed to load %.200s: %.200s",
|
||||
pathname, strerror(errno));
|
||||
PyErr_SetString(PyExc_ImportError, buf);
|
||||
return NULL;
|
||||
}
|
||||
PyOS_snprintf(funcname, sizeof(funcname), "init%.200s", shortname);
|
||||
if (Py_VerboseFlag)
|
||||
printf("get_symbol_address %s\n", funcname);
|
||||
if (get_symbol_address(lib, funcname, -1, &p) < 0) {
|
||||
p = NULL;
|
||||
if (Py_VerboseFlag)
|
||||
perror(funcname);
|
||||
}
|
||||
|
||||
return (dl_funcptr) p;
|
||||
}
|
|
@ -133,6 +133,10 @@ void PyThread_init_thread(void)
|
|||
#include "thread_plan9.h"
|
||||
#endif
|
||||
|
||||
#ifdef ATHEOS_THREADS
|
||||
#include "thread_atheos.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
#ifdef FOOBAR_THREADS
|
||||
#include "thread_foobar.h"
|
||||
|
|
|
@ -0,0 +1,300 @@
|
|||
/* Threading for AtheOS.
|
||||
Based on thread_beos.h. */
|
||||
|
||||
#include <atheos/threads.h>
|
||||
#include <atheos/semaphore.h>
|
||||
#include <atheos/atomic.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
|
||||
/* Missing decl from threads.h */
|
||||
extern int exit_thread(int);
|
||||
|
||||
|
||||
/* Undefine FASTLOCK to play with simple semaphores. */
|
||||
#define FASTLOCK
|
||||
|
||||
|
||||
#ifdef FASTLOCK
|
||||
|
||||
/* Use an atomic counter and a semaphore for maximum speed. */
|
||||
typedef struct fastmutex {
|
||||
sem_id sem;
|
||||
atomic_t count;
|
||||
} fastmutex_t;
|
||||
|
||||
|
||||
static int fastmutex_create(const char *name, fastmutex_t * mutex);
|
||||
static int fastmutex_destroy(fastmutex_t * mutex);
|
||||
static int fastmutex_lock(fastmutex_t * mutex);
|
||||
static int fastmutex_timedlock(fastmutex_t * mutex, bigtime_t timeout);
|
||||
static int fastmutex_unlock(fastmutex_t * mutex);
|
||||
|
||||
|
||||
static int fastmutex_create(const char *name, fastmutex_t * mutex)
|
||||
{
|
||||
mutex->count = 0;
|
||||
mutex->sem = create_semaphore(name, 0, 0);
|
||||
return (mutex->sem < 0) ? -1 : 0;
|
||||
}
|
||||
|
||||
|
||||
static int fastmutex_destroy(fastmutex_t * mutex)
|
||||
{
|
||||
if (fastmutex_timedlock(mutex, 0) == 0 || errno == EWOULDBLOCK) {
|
||||
return delete_semaphore(mutex->sem);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int fastmutex_lock(fastmutex_t * mutex)
|
||||
{
|
||||
atomic_t prev = atomic_add(&mutex->count, 1);
|
||||
if (prev > 0)
|
||||
return lock_semaphore(mutex->sem);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int fastmutex_timedlock(fastmutex_t * mutex, bigtime_t timeout)
|
||||
{
|
||||
atomic_t prev = atomic_add(&mutex->count, 1);
|
||||
if (prev > 0)
|
||||
return lock_semaphore_x(mutex->sem, 1, 0, timeout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int fastmutex_unlock(fastmutex_t * mutex)
|
||||
{
|
||||
atomic_t prev = atomic_add(&mutex->count, -1);
|
||||
if (prev > 1)
|
||||
return unlock_semaphore(mutex->sem);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#endif /* FASTLOCK */
|
||||
|
||||
|
||||
/*
|
||||
* Initialization.
|
||||
*
|
||||
*/
|
||||
static void PyThread__init_thread(void)
|
||||
{
|
||||
/* Do nothing. */
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Thread support.
|
||||
*
|
||||
*/
|
||||
|
||||
static atomic_t thread_count = 0;
|
||||
|
||||
long PyThread_start_new_thread(void (*func) (void *), void *arg)
|
||||
{
|
||||
status_t success = -1;
|
||||
thread_id tid;
|
||||
char name[OS_NAME_LENGTH];
|
||||
atomic_t this_thread;
|
||||
|
||||
dprintf(("PyThread_start_new_thread called\n"));
|
||||
|
||||
this_thread = atomic_add(&thread_count, 1);
|
||||
PyOS_snprintf(name, sizeof(name), "python thread (%d)", this_thread);
|
||||
|
||||
tid = spawn_thread(name, func, NORMAL_PRIORITY, 0, arg);
|
||||
if (tid < 0) {
|
||||
dprintf(("PyThread_start_new_thread spawn_thread failed: %s\n", strerror(errno)));
|
||||
} else {
|
||||
success = resume_thread(tid);
|
||||
if (success < 0) {
|
||||
dprintf(("PyThread_start_new_thread resume_thread failed: %s\n", strerror(errno)));
|
||||
}
|
||||
}
|
||||
|
||||
return (success < 0 ? -1 : tid);
|
||||
}
|
||||
|
||||
|
||||
long PyThread_get_thread_ident(void)
|
||||
{
|
||||
return get_thread_id(NULL);
|
||||
}
|
||||
|
||||
|
||||
static void do_PyThread_exit_thread(int no_cleanup)
|
||||
{
|
||||
dprintf(("PyThread_exit_thread called\n"));
|
||||
|
||||
/* Thread-safe way to read a variable without a mutex: */
|
||||
if (atomic_add(&thread_count, 0) == 0) {
|
||||
/* No threads around, so exit main(). */
|
||||
if (no_cleanup)
|
||||
_exit(0);
|
||||
else
|
||||
exit(0);
|
||||
} else {
|
||||
/* We're a thread */
|
||||
exit_thread(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PyThread_exit_thread(void)
|
||||
{
|
||||
do_PyThread_exit_thread(0);
|
||||
}
|
||||
|
||||
|
||||
void PyThread__exit_thread(void)
|
||||
{
|
||||
do_PyThread_exit_thread(1);
|
||||
}
|
||||
|
||||
|
||||
#ifndef NO_EXIT_PROG
|
||||
static void do_PyThread_exit_prog(int status, int no_cleanup)
|
||||
{
|
||||
dprintf(("PyThread_exit_prog(%d) called\n", status));
|
||||
|
||||
/* No need to do anything, the threads get torn down if main()exits. */
|
||||
if (no_cleanup)
|
||||
_exit(status);
|
||||
else
|
||||
exit(status);
|
||||
}
|
||||
|
||||
|
||||
void PyThread_exit_prog(int status)
|
||||
{
|
||||
do_PyThread_exit_prog(status, 0);
|
||||
}
|
||||
|
||||
|
||||
void PyThread__exit_prog(int status)
|
||||
{
|
||||
do_PyThread_exit_prog(status, 1);
|
||||
}
|
||||
#endif /* NO_EXIT_PROG */
|
||||
|
||||
|
||||
/*
|
||||
* Lock support.
|
||||
*
|
||||
*/
|
||||
|
||||
static atomic_t lock_count = 0;
|
||||
|
||||
PyThread_type_lock PyThread_allocate_lock(void)
|
||||
{
|
||||
#ifdef FASTLOCK
|
||||
fastmutex_t *lock;
|
||||
#else
|
||||
sem_id sema;
|
||||
#endif
|
||||
char name[OS_NAME_LENGTH];
|
||||
atomic_t this_lock;
|
||||
|
||||
dprintf(("PyThread_allocate_lock called\n"));
|
||||
|
||||
#ifdef FASTLOCK
|
||||
lock = (fastmutex_t *) malloc(sizeof(fastmutex_t));
|
||||
if (lock == NULL) {
|
||||
dprintf(("PyThread_allocate_lock failed: out of memory\n"));
|
||||
return (PyThread_type_lock) NULL;
|
||||
}
|
||||
#endif
|
||||
this_lock = atomic_add(&lock_count, 1);
|
||||
PyOS_snprintf(name, sizeof(name), "python lock (%d)", this_lock);
|
||||
|
||||
#ifdef FASTLOCK
|
||||
if (fastmutex_create(name, lock) < 0) {
|
||||
dprintf(("PyThread_allocate_lock failed: %s\n",
|
||||
strerror(errno)));
|
||||
free(lock);
|
||||
lock = NULL;
|
||||
}
|
||||
dprintf(("PyThread_allocate_lock()-> %p\n", lock));
|
||||
return (PyThread_type_lock) lock;
|
||||
#else
|
||||
sema = create_semaphore(name, 1, 0);
|
||||
if (sema < 0) {
|
||||
dprintf(("PyThread_allocate_lock failed: %s\n",
|
||||
strerror(errno)));
|
||||
sema = 0;
|
||||
}
|
||||
dprintf(("PyThread_allocate_lock()-> %p\n", sema));
|
||||
return (PyThread_type_lock) sema;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void PyThread_free_lock(PyThread_type_lock lock)
|
||||
{
|
||||
dprintf(("PyThread_free_lock(%p) called\n", lock));
|
||||
|
||||
#ifdef FASTLOCK
|
||||
if (fastmutex_destroy((fastmutex_t *) lock) < 0) {
|
||||
dprintf(("PyThread_free_lock(%p) failed: %s\n", lock,
|
||||
strerror(errno)));
|
||||
}
|
||||
free(lock);
|
||||
#else
|
||||
if (delete_semaphore((sem_id) lock) < 0) {
|
||||
dprintf(("PyThread_free_lock(%p) failed: %s\n", lock,
|
||||
strerror(errno)));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
int PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
|
||||
{
|
||||
int retval;
|
||||
|
||||
dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock,
|
||||
waitflag));
|
||||
|
||||
#ifdef FASTLOCK
|
||||
if (waitflag)
|
||||
retval = fastmutex_lock((fastmutex_t *) lock);
|
||||
else
|
||||
retval = fastmutex_timedlock((fastmutex_t *) lock, 0);
|
||||
#else
|
||||
if (waitflag)
|
||||
retval = lock_semaphore((sem_id) lock);
|
||||
else
|
||||
retval = lock_semaphore_x((sem_id) lock, 1, 0, 0);
|
||||
#endif
|
||||
if (retval < 0) {
|
||||
dprintf(("PyThread_acquire_lock(%p, %d) failed: %s\n",
|
||||
lock, waitflag, strerror(errno)));
|
||||
}
|
||||
dprintf(("PyThread_acquire_lock(%p, %d)-> %d\n", lock, waitflag,
|
||||
retval));
|
||||
return retval < 0 ? 0 : 1;
|
||||
}
|
||||
|
||||
|
||||
void PyThread_release_lock(PyThread_type_lock lock)
|
||||
{
|
||||
dprintf(("PyThread_release_lock(%p) called\n", lock));
|
||||
|
||||
#ifdef FASTLOCK
|
||||
if (fastmutex_unlock((fastmutex_t *) lock) < 0) {
|
||||
dprintf(("PyThread_release_lock(%p) failed: %s\n", lock,
|
||||
strerror(errno)));
|
||||
}
|
||||
#else
|
||||
if (unlock_semaphore((sem_id) lock) < 0) {
|
||||
dprintf(("PyThread_release_lock(%p) failed: %s\n", lock,
|
||||
strerror(errno)));
|
||||
}
|
||||
#endif
|
||||
}
|
|
@ -50,6 +50,8 @@ except KeyError:
|
|||
try:
|
||||
if sys.platform.find("beos") == 0:
|
||||
searchdirs=os.environ['BEINCLUDES'].split(';')
|
||||
elif sys.platform.startswith("atheos"):
|
||||
searchdirs=os.environ['C_INCLUDE_PATH'].split(':')
|
||||
else:
|
||||
raise KeyError
|
||||
except KeyError:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#! /bin/sh
|
||||
# From configure.in Revision: 1.321 .
|
||||
# From configure.in Revision: 1.322 .
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.53.
|
||||
#
|
||||
|
@ -1293,6 +1293,7 @@ then
|
|||
case $MACHDEP in
|
||||
cygwin*) MACHDEP="cygwin";;
|
||||
darwin*) MACHDEP="darwin";;
|
||||
atheos*) MACHDEP="atheos";;
|
||||
'') MACHDEP="unknown";;
|
||||
esac
|
||||
fi
|
||||
|
@ -3072,7 +3073,7 @@ fi;
|
|||
if test -z "$enable_shared"
|
||||
then
|
||||
case $ac_sys_system in
|
||||
CYGWIN*)
|
||||
CYGWIN* | atheos*)
|
||||
enable_shared="yes";;
|
||||
*)
|
||||
enable_shared="no";;
|
||||
|
@ -3131,6 +3132,11 @@ if test $enable_shared = "yes"; then
|
|||
BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
|
||||
RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
|
||||
;;
|
||||
atheos*)
|
||||
LDLIBRARY='libpython$(VERSION).so'
|
||||
BLDLIBRARY='-L. -lpython$(VERSION)'
|
||||
RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
|
||||
;;
|
||||
esac
|
||||
# DG/UX requires some fancy ld contortions to produce a .so from an .a
|
||||
case $MACHDEP in
|
||||
|
@ -3384,6 +3390,7 @@ if test -z "$LN" ; then
|
|||
case $ac_sys_system in
|
||||
BeOS*) LN="ln -s";;
|
||||
CYGWIN*) LN="ln -s";;
|
||||
atheos*) LN="ln -s";;
|
||||
*) LN=ln;;
|
||||
esac
|
||||
fi
|
||||
|
@ -8779,6 +8786,7 @@ then
|
|||
SCO_SV*) LDSHARED="cc -G -KPIC -Ki486 -belf -Wl,-Bexport";;
|
||||
Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
|
||||
CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
|
||||
atheos*) LDSHARED="gcc -shared";;
|
||||
*) LDSHARED="ld";;
|
||||
esac
|
||||
fi
|
||||
|
@ -8814,6 +8822,7 @@ then
|
|||
*) CCSHARED="";;
|
||||
esac;;
|
||||
CYGWIN*) CCSHARED="-DUSE_DL_IMPORT";;
|
||||
atheos*) CCSHARED="-fPIC";;
|
||||
esac
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: $CCSHARED" >&5
|
||||
|
@ -8883,6 +8892,23 @@ fi
|
|||
echo "$as_me:$LINENO: result: $CFLAGSFORSHARED" >&5
|
||||
echo "${ECHO_T}$CFLAGSFORSHARED" >&6
|
||||
|
||||
# SHLIBS are libraries (except -lc and -lm) to link to the python shared
|
||||
# library (with --enable-shared).
|
||||
# For platforms on which shared libraries are not allowed to have unresolved
|
||||
# symbols, this must be set to $(LIBS) (expanded by make).
|
||||
|
||||
echo "$as_me:$LINENO: checking SHLIBS" >&5
|
||||
echo $ECHO_N "checking SHLIBS... $ECHO_C" >&6
|
||||
case "$ac_sys_system" in
|
||||
atheos*)
|
||||
SHLIBS='$(LIBS)';;
|
||||
*)
|
||||
SHLIBS='';;
|
||||
esac
|
||||
echo "$as_me:$LINENO: result: $SHLIBS" >&5
|
||||
echo "${ECHO_T}$SHLIBS" >&6
|
||||
|
||||
|
||||
# checks for libraries
|
||||
|
||||
echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
|
||||
|
@ -9870,6 +9896,120 @@ _ACEOF
|
|||
THREADOBJ="Python/thread.o"
|
||||
else
|
||||
|
||||
if test "${ac_cv_header_atheos_threads_h+set}" = set; then
|
||||
echo "$as_me:$LINENO: checking for atheos/threads.h" >&5
|
||||
echo $ECHO_N "checking for atheos/threads.h... $ECHO_C" >&6
|
||||
if test "${ac_cv_header_atheos_threads_h+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: $ac_cv_header_atheos_threads_h" >&5
|
||||
echo "${ECHO_T}$ac_cv_header_atheos_threads_h" >&6
|
||||
else
|
||||
# Is the header compilable?
|
||||
echo "$as_me:$LINENO: checking atheos/threads.h usability" >&5
|
||||
echo $ECHO_N "checking atheos/threads.h usability... $ECHO_C" >&6
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
#line $LINENO "configure"
|
||||
#include "confdefs.h"
|
||||
$ac_includes_default
|
||||
#include <atheos/threads.h>
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
(eval $ac_compile) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -s conftest.$ac_objext'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
ac_header_compiler=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
ac_header_compiler=no
|
||||
fi
|
||||
rm -f conftest.$ac_objext conftest.$ac_ext
|
||||
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
|
||||
echo "${ECHO_T}$ac_header_compiler" >&6
|
||||
|
||||
# Is the header present?
|
||||
echo "$as_me:$LINENO: checking atheos/threads.h presence" >&5
|
||||
echo $ECHO_N "checking atheos/threads.h presence... $ECHO_C" >&6
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
#line $LINENO "configure"
|
||||
#include "confdefs.h"
|
||||
#include <atheos/threads.h>
|
||||
_ACEOF
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
|
||||
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
|
||||
ac_status=$?
|
||||
egrep -v '^ *\+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } >/dev/null; then
|
||||
if test -s conftest.err; then
|
||||
ac_cpp_err=$ac_c_preproc_warn_flag
|
||||
else
|
||||
ac_cpp_err=
|
||||
fi
|
||||
else
|
||||
ac_cpp_err=yes
|
||||
fi
|
||||
if test -z "$ac_cpp_err"; then
|
||||
ac_header_preproc=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
ac_header_preproc=no
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
|
||||
echo "${ECHO_T}$ac_header_preproc" >&6
|
||||
|
||||
# So? What about this header?
|
||||
case $ac_header_compiler:$ac_header_preproc in
|
||||
yes:no )
|
||||
{ echo "$as_me:$LINENO: WARNING: atheos/threads.h: accepted by the compiler, rejected by the preprocessor!" >&5
|
||||
echo "$as_me: WARNING: atheos/threads.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: atheos/threads.h: proceeding with the preprocessor's result" >&5
|
||||
echo "$as_me: WARNING: atheos/threads.h: proceeding with the preprocessor's result" >&2;};;
|
||||
no:yes )
|
||||
{ echo "$as_me:$LINENO: WARNING: atheos/threads.h: present but cannot be compiled" >&5
|
||||
echo "$as_me: WARNING: atheos/threads.h: present but cannot be compiled" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: atheos/threads.h: check for missing prerequisite headers?" >&5
|
||||
echo "$as_me: WARNING: atheos/threads.h: check for missing prerequisite headers?" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: atheos/threads.h: proceeding with the preprocessor's result" >&5
|
||||
echo "$as_me: WARNING: atheos/threads.h: proceeding with the preprocessor's result" >&2;};;
|
||||
esac
|
||||
echo "$as_me:$LINENO: checking for atheos/threads.h" >&5
|
||||
echo $ECHO_N "checking for atheos/threads.h... $ECHO_C" >&6
|
||||
if test "${ac_cv_header_atheos_threads_h+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
ac_cv_header_atheos_threads_h=$ac_header_preproc
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: $ac_cv_header_atheos_threads_h" >&5
|
||||
echo "${ECHO_T}$ac_cv_header_atheos_threads_h" >&6
|
||||
|
||||
fi
|
||||
if test $ac_cv_header_atheos_threads_h = yes; then
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define WITH_THREAD 1
|
||||
_ACEOF
|
||||
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define ATHEOS_THREADS 1
|
||||
_ACEOF
|
||||
|
||||
THREADOBJ="Python/thread.o"
|
||||
else
|
||||
|
||||
if test "${ac_cv_header_kernel_OS_h+set}" = set; then
|
||||
echo "$as_me:$LINENO: checking for kernel/OS.h" >&5
|
||||
echo $ECHO_N "checking for kernel/OS.h... $ECHO_C" >&6
|
||||
|
@ -10324,6 +10464,9 @@ fi
|
|||
fi
|
||||
|
||||
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
@ -11192,6 +11335,7 @@ then
|
|||
BeOS*) DYNLOADFILE="dynload_beos.o";;
|
||||
hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
|
||||
Darwin/*) DYNLOADFILE="dynload_next.o";;
|
||||
atheos*) DYNLOADFILE="dynload_atheos.o";;
|
||||
*)
|
||||
# use dynload_shlib.c and dlopen() if we have it; otherwise stub
|
||||
# out any dynamic loading
|
||||
|
@ -16394,6 +16538,7 @@ s,@BLDSHARED@,$BLDSHARED,;t t
|
|||
s,@CCSHARED@,$CCSHARED,;t t
|
||||
s,@LINKFORSHARED@,$LINKFORSHARED,;t t
|
||||
s,@CFLAGSFORSHARED@,$CFLAGSFORSHARED,;t t
|
||||
s,@SHLIBS@,$SHLIBS,;t t
|
||||
s,@USE_SIGNAL_MODULE@,$USE_SIGNAL_MODULE,;t t
|
||||
s,@SIGNAL_OBJS@,$SIGNAL_OBJS,;t t
|
||||
s,@USE_THREAD_MODULE@,$USE_THREAD_MODULE,;t t
|
||||
|
|
33
configure.in
33
configure.in
|
@ -81,6 +81,7 @@ then
|
|||
case $MACHDEP in
|
||||
cygwin*) MACHDEP="cygwin";;
|
||||
darwin*) MACHDEP="darwin";;
|
||||
atheos*) MACHDEP="atheos";;
|
||||
'') MACHDEP="unknown";;
|
||||
esac
|
||||
fi
|
||||
|
@ -328,7 +329,7 @@ AC_ARG_ENABLE(shared,
|
|||
if test -z "$enable_shared"
|
||||
then
|
||||
case $ac_sys_system in
|
||||
CYGWIN*)
|
||||
CYGWIN* | atheos*)
|
||||
enable_shared="yes";;
|
||||
*)
|
||||
enable_shared="no";;
|
||||
|
@ -385,6 +386,11 @@ if test $enable_shared = "yes"; then
|
|||
BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
|
||||
RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
|
||||
;;
|
||||
atheos*)
|
||||
LDLIBRARY='libpython$(VERSION).so'
|
||||
BLDLIBRARY='-L. -lpython$(VERSION)'
|
||||
RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
|
||||
;;
|
||||
esac
|
||||
# DG/UX requires some fancy ld contortions to produce a .so from an .a
|
||||
case $MACHDEP in
|
||||
|
@ -417,6 +423,7 @@ if test -z "$LN" ; then
|
|||
case $ac_sys_system in
|
||||
BeOS*) LN="ln -s";;
|
||||
CYGWIN*) LN="ln -s";;
|
||||
atheos*) LN="ln -s";;
|
||||
*) LN=ln;;
|
||||
esac
|
||||
fi
|
||||
|
@ -906,6 +913,7 @@ then
|
|||
SCO_SV*) LDSHARED="cc -G -KPIC -Ki486 -belf -Wl,-Bexport";;
|
||||
Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
|
||||
CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
|
||||
atheos*) LDSHARED="gcc -shared";;
|
||||
*) LDSHARED="ld";;
|
||||
esac
|
||||
fi
|
||||
|
@ -939,6 +947,7 @@ then
|
|||
*) CCSHARED="";;
|
||||
esac;;
|
||||
CYGWIN*) CCSHARED="-DUSE_DL_IMPORT";;
|
||||
atheos*) CCSHARED="-fPIC";;
|
||||
esac
|
||||
fi
|
||||
AC_MSG_RESULT($CCSHARED)
|
||||
|
@ -1003,6 +1012,21 @@ then
|
|||
fi
|
||||
AC_MSG_RESULT($CFLAGSFORSHARED)
|
||||
|
||||
# SHLIBS are libraries (except -lc and -lm) to link to the python shared
|
||||
# library (with --enable-shared).
|
||||
# For platforms on which shared libraries are not allowed to have unresolved
|
||||
# symbols, this must be set to $(LIBS) (expanded by make).
|
||||
AC_SUBST(SHLIBS)
|
||||
AC_MSG_CHECKING(SHLIBS)
|
||||
case "$ac_sys_system" in
|
||||
atheos*)
|
||||
SHLIBS='$(LIBS)';;
|
||||
*)
|
||||
SHLIBS='';;
|
||||
esac
|
||||
AC_MSG_RESULT($SHLIBS)
|
||||
|
||||
|
||||
# checks for libraries
|
||||
AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
|
||||
AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
|
||||
|
@ -1177,6 +1201,10 @@ pthread_create (NULL, NULL, start_routine, NULL)], [
|
|||
AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
|
||||
posix_threads=yes
|
||||
THREADOBJ="Python/thread.o"],[
|
||||
AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
|
||||
AC_DEFINE(ATHEOS_THREADS, 1,
|
||||
[Define this if you have AtheOS threads.])
|
||||
THREADOBJ="Python/thread.o"],[
|
||||
AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
|
||||
AC_DEFINE(BEOS_THREADS, 1,
|
||||
[Define this if you have BeOS threads.])
|
||||
|
@ -1202,7 +1230,7 @@ pthread_create (NULL, NULL, start_routine, NULL)], [
|
|||
LIBS="$LIBS -lcma"
|
||||
THREADOBJ="Python/thread.o"],[
|
||||
USE_THREAD_MODULE="#"])
|
||||
])])])])])])])])])])
|
||||
])])])])])])])])])])])
|
||||
|
||||
if test "$posix_threads" = "yes"; then
|
||||
if test "$unistd_defines_pthreads" = "no"; then
|
||||
|
@ -1560,6 +1588,7 @@ then
|
|||
BeOS*) DYNLOADFILE="dynload_beos.o";;
|
||||
hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
|
||||
Darwin/*) DYNLOADFILE="dynload_next.o";;
|
||||
atheos*) DYNLOADFILE="dynload_atheos.o";;
|
||||
*)
|
||||
# use dynload_shlib.c and dlopen() if we have it; otherwise stub
|
||||
# out any dynamic loading
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
support for AIX C++ shared extension modules. */
|
||||
#undef AIX_GENUINE_CPLUSPLUS
|
||||
|
||||
/* Define this if you have AtheOS threads. */
|
||||
#undef ATHEOS_THREADS
|
||||
|
||||
/* Define if your <unistd.h> contains bad prototypes for exec*() (as it does
|
||||
on SGI IRIX 4.x) */
|
||||
#undef BAD_EXEC_PROTOTYPES
|
||||
|
|
19
setup.py
19
setup.py
|
@ -214,6 +214,8 @@ class PyBuildExt(build_ext):
|
|||
platform = 'beos'
|
||||
elif platform[:6] == 'darwin':
|
||||
platform = 'darwin'
|
||||
elif platform[:6] == 'atheos':
|
||||
platform = 'atheos'
|
||||
|
||||
return platform
|
||||
|
||||
|
@ -242,6 +244,13 @@ class PyBuildExt(build_ext):
|
|||
platform = self.get_platform()
|
||||
(srcdir,) = sysconfig.get_config_vars('srcdir')
|
||||
|
||||
# Check for AtheOS which has libraries in non-standard locations
|
||||
if platform == 'atheos':
|
||||
lib_dirs += ['/system/libs', '/atheos/autolnk/lib']
|
||||
lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep)
|
||||
inc_dirs += ['/system/include', '/atheos/autolnk/include']
|
||||
inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
|
||||
|
||||
# Check for MacOS X, which doesn't need libm.a at all
|
||||
math_libs = ['m']
|
||||
if platform in ['darwin', 'beos']:
|
||||
|
@ -323,7 +332,8 @@ class PyBuildExt(build_ext):
|
|||
exts.append( Extension('cPickle', ['cPickle.c']) )
|
||||
|
||||
# Memory-mapped files (also works on Win32).
|
||||
exts.append( Extension('mmap', ['mmapmodule.c']) )
|
||||
if platform not in ['atheos']:
|
||||
exts.append( Extension('mmap', ['mmapmodule.c']) )
|
||||
|
||||
# Lance Ellinghaus's modules:
|
||||
# enigma-inspired encryption
|
||||
|
@ -479,10 +489,11 @@ class PyBuildExt(build_ext):
|
|||
# Steen Lumholt's termios module
|
||||
exts.append( Extension('termios', ['termios.c']) )
|
||||
# Jeremy Hylton's rlimit interface
|
||||
exts.append( Extension('resource', ['resource.c']) )
|
||||
if platform not in ['atheos']:
|
||||
exts.append( Extension('resource', ['resource.c']) )
|
||||
|
||||
# Sun yellow pages. Some systems have the functions in libc.
|
||||
if platform not in ['cygwin']:
|
||||
if platform not in ['cygwin', 'atheos']:
|
||||
if (self.compiler.find_library_file(lib_dirs, 'nsl')):
|
||||
libs = ['nsl']
|
||||
else:
|
||||
|
@ -593,7 +604,7 @@ class PyBuildExt(build_ext):
|
|||
|
||||
# Dynamic loading module
|
||||
dl_inc = find_file('dlfcn.h', [], inc_dirs)
|
||||
if dl_inc is not None:
|
||||
if (dl_inc is not None) and (platform not in ['atheos']):
|
||||
exts.append( Extension('dl', ['dlmodule.c']) )
|
||||
|
||||
# Platform-specific libraries
|
||||
|
|
Loading…
Reference in New Issue