15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The contents of this file are subject to the Mozilla Public
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * License Version 1.1 (the "License"); you may not use this file
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * except in compliance with the License. You may obtain a copy of
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the License at http://www.mozilla.org/MPL/
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Software distributed under the License is distributed on an "AS
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * implied. See the License for the specific language governing
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * rights and limitations under the License.
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The Original Code is the Netscape Portable Runtime (NSPR).
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The Initial Developer of the Original Code is Netscape
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Communications Corporation.  Portions created by Netscape are
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (C) 1998-2000 Netscape Communications Corporation.  All
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Rights Reserved.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Contributor(s):
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Alternatively, the contents of this file may be used under the
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * terms of the GNU General Public License Version 2 or later (the
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * "GPL"), in which case the provisions of the GPL are applicable
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * instead of those above.  If you wish to allow use of your
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * version of this file only under the terms of the GPL and not to
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * allow others to use your version of this file under the MPL,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * indicate your decision by deleting the provisions above and
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * replace them with the notice and other provisions required by
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the GPL.  If you do not delete the provisions above, a recipient
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * may use your version of this file under either the MPL or the
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * GPL.
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef nspr_beos_defs_h___
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define nspr_beos_defs_h___
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "prtypes.h"
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "prio.h"
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "prthread.h"
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "prproces.h"
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "prmem.h"
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "obsolete/prsem.h"
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <errno.h>
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <support/SupportDefs.h>
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <kernel/OS.h>
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <dirent.h>
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Internal configuration macros
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef BONE_VERSION
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_HAVE_SOCKADDR_LEN
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PR_LINKER_ARCH	"beos"
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_SI_SYSNAME  "BEOS"
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __powerpc__
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_SI_ARCHITECTURE "ppc"
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_SI_ARCHITECTURE "x86"
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PR_DLL_SUFFIX		".so"
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_VMBASE              0x30000000
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_STACK_VMBASE	0x50000000
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_DEFAULT_STACK_SIZE	65536L
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_MMAP_FLAGS          MAP_PRIVATE
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef	HAVE_STACK_GROWING_UP
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_DLL
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_NO_CLOCK_TIMER
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The Atomic operations
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_HAVE_ATOMIC_OPS
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INIT_ATOMIC _MD_AtomicInit
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_ATOMIC_INCREMENT _MD_AtomicIncrement
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_ATOMIC_ADD _MD_AtomicAdd
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_ATOMIC_DECREMENT _MD_AtomicDecrement
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_ATOMIC_SET _MD_AtomicSet
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_CVAR_BUILT_ON_SEM
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_GLOBAL_THREADS_ONLY
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_BTHREADS
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_NEED_FAKE_POLL
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_HAVE_PEEK_BUFFER
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_PEEK_BUFFER_MAX (16 * 1024)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_FD_NEED_EMULATE_MSG_PEEK(fd) 1
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_CONNECT_DOES_NOT_BIND
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Define threading functions and objects as native BeOS */
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _MDThread {
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    thread_id	tid;	/* BeOS thread handle */
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	sem_id		joinSem;	/* sems used to synchronzie joining */
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	PRBool	is_joining;	/* TRUE if someone is currently waiting to
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						   join this thread */
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _MDThreadStack {
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PRInt8	notused;
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Lock and Semaphore related definitions
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _MDLock {
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    sem_id semaphoreID;
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int32  benaphoreCount;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _MDCVar {
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    sem_id sem1;
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    sem_id sem2;
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int16  count;
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _MDSemaphore {
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    sem_id sid;
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** CPU-related definitions
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _MDCPU {
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int8		unused;
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** Process-related definitions
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _MDProcess {
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    pid_t pid;
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _MDSegment {
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PRInt8 notused;
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)** File- and directory-related definitions
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef BONE_VERSION
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define BE_SOCK_SHUTDOWN_READ	0x01
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define BE_SOCK_SHUTDOWN_WRITE	0x02
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _MDFileDesc {
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PRInt32	osfd;
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PRInt32	sock_state;
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PRBool	accepted_socket;
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PRNetAddr	peer_addr;
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef BONE_VERSION
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PRBool	connectValueValid;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int		connectReturnValue;
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int		connectReturnError;
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _MDDir {
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DIR		*d;
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PR_DIRECTORY_SEPARATOR		'/'
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PR_DIRECTORY_SEPARATOR_STR	"/"
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PR_PATH_SEPARATOR		':'
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PR_PATH_SEPARATOR_STR		":"
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GETTIMEOFDAY(tp)	gettimeofday((tp), NULL)
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* --- Memory-mapped files stuff --- not implemented on BeOS */
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _MDFileMap {
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PRInt8 unused;
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Network related definitions.
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef BONE_VERSION
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IPPROTO_IP 0
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define AF_UNIX 2
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TCP_NODELAY SO_NONBLOCK
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SO_LINGER -1
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SO_ERROR 4
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_INTERRUPT_CHECK_INTERVAL_SECS 5
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef BONE_VERSION
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* these aren't actually used. if they are, we're screwed */
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct  protoent {
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char    *p_name;        /* official protocol name */
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char    **p_aliases;    /* alias list */
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int     p_proto;        /* protocol # */
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct protoent* getprotobyname(const char* name);
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct protoent* getprotobynumber(int number);
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * malloc() related definitions.
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef _PR_OVERRIDE_MALLOC
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Miscellaneous */
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_ERRNO()             (errno)
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CLEANUP_BEFORE_EXIT _MD_cleanup_before_exit
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_EXIT _MD_exit
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GET_ENV getenv
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_PUT_ENV putenv
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_EARLY_INIT _MD_early_init
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_FINAL_INIT _MD_final_init
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* CPU Stuff */
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INIT_CPUS _MD_init_cpus
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_WAKEUP_CPUS _MD_wakeup_cpus
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_START_INTERRUPTS _MD_start_interrupts
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_STOP_INTERRUPTS _MD_stop_interrupts
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_DISABLE_CLOCK_INTERRUPTS _MD_disable_clock_interrupts
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_BLOCK_CLOCK_INTERRUPTS _MD_block_clock_interrupts
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_UNBLOCK_CLOCK_INTERRUPTS _MD_unblock_clock_interrupts
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CLOCK_INTERRUPT _MD_clock_interrupt
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INIT_STACK _MD_init_stack
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CLEAR_STACK _MD_clear_stack
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define _MD_GET_INTSOFF _MD_get_intsoff
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define _MD_SET_INTSOFF _MD_set_intsoff
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CURRENT_CPU _MD_current_cpu
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SET_CURRENT_CPU _MD_set_current_cpu
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INIT_RUNNING_CPU _MD_init_running_cpu
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_PAUSE_CPU _MD_pause_cpu
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Thread stuff */
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CURRENT_THREAD() PR_GetCurrentThread()
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define _MD_GET_ATTACHED_THREAD _MD_get_attached_thread
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_LAST_THREAD _MD_last_thread
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SET_CURRENT_THREAD _MD_set_current_THREAD
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SET_LAST_THREAD _MD_set_last_thread
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INIT_THREAD _MD_init_thread
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_EXIT_THREAD _MD_exit_thread
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INIT_ATTACHED_THREAD _MD_init_attached_thread
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SUSPEND_THREAD _MD_suspend_thread
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_RESUME_THREAD _MD_resume_thread
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SUSPEND_CPU _MD_suspend_cpu
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_RESUME_CPU _MD_resume_cpu
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_BEGIN_SUSPEND_ALL _MD_begin_suspend_all
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_END_SUSPEND_ALL _MD_end_suspend_all
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_BEGIN_RESUME_ALL _MD_begin_resume_all
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_END_RESUME_ALL _MD_end_resume_all
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GET_SP _MD_get_sp
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CLEAN_THREAD _MD_clean_thread
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CREATE_PRIMORDIAL_USER_THREAD _MD_create_primordial_user_thread
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CREATE_USER_THREAD _MD_create_user_thread
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INIT_PRIMORDIAL_THREAD _MD_init_primordial_thread
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CREATE_THREAD _MD_create_thread
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_YIELD _MD_yield
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SET_PRIORITY _MD_set_priority
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SUSPENDALL _MD_suspendall
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_RESUMEALL _MD_resumeall
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SWITCH_CONTEXT _MD_switch_context
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_RESTORE_CONTEXT _MD_restore_context
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_WAIT _MD_wait
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_WAKEUP_WAITER _MD_wakeup_waiter
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SETTHREADAFFINITYMASK _MD_setthreadaffinitymask
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GETTHREADAFFINITYMASK _MD_getthreadaffinitymask
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Thread Synchronization */
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INIT_LOCKS _MD_init_locks
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_NEW_LOCK _MD_new_lock
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_FREE_LOCK _MD_free_lock
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_LOCK _MD_lock
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_TEST_AND_LOCK _MD_test_and_lock
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_UNLOCK _MD_unlock
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_IOQ_LOCK _MD_ioq_lock
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_IOQ_UNLOCK _MD_ioq_unlock
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_NEW_SEM _MD_new_sem
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_DESTROY_SEM _MD_destroy_sem
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_TIMED_WAIT_SEM _MD_timed_wait_sem
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_WAIT_SEM _MD_wait_sem
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_POST_SEM _MD_post_sem
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define _MD_NEW_CV _MD_new_cv
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define _MD_FREE_CV _MD_free_cv
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define _MD_WAIT_CV _MD_wait_cv
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define _MD_NOTIFY_CV _MD_notify_cv
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define _MD_NOTIFYALL_CV _MD_notifyall_cv
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* File I/O */
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* don't need any I/O initializations */
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INIT_IO()
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INIT_FILEDESC(fd)
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_OPEN_DIR _MD_open_dir
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_READ_DIR _MD_read_dir
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CLOSE_DIR _MD_close_dir
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_MAKE_NONBLOCK _MD_make_nonblock
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SET_FD_INHERITABLE _MD_set_fd_inheritable
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INIT_FD_INHERITABLE _MD_init_fd_inheritable
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_QUERY_FD_INHERITABLE _MD_query_fd_inheritable
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_OPEN _MD_open
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_OPEN_FILE _MD_open
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CLOSE_FILE _MD_close_file
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_READ _MD_read
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_WRITE _MD_write
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_WRITEV _MD_writev
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_LSEEK _MD_lseek
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_LSEEK64 _MD_lseek64
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_FSYNC _MD_fsync
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_DELETE _MD_delete
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GETFILEINFO _MD_getfileinfo
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GETFILEINFO64 _MD_getfileinfo64
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GETOPENFILEINFO _MD_getopenfileinfo
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GETOPENFILEINFO64 _MD_getopenfileinfo64
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_RENAME _MD_rename
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_ACCESS _MD_access
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_STAT stat
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_MKDIR _MD_mkdir
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_MAKE_DIR _MD_mkdir
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_RMDIR _MD_rmdir
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_PR_POLL _MD_pr_poll
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Network I/O */
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CLOSE_SOCKET _MD_close_socket
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CONNECT _MD_connect
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_ACCEPT _MD_accept
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_BIND _MD_bind
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_LISTEN _MD_listen
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SHUTDOWN _MD_shutdown
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_RECV _MD_recv
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SEND _MD_send
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_ACCEPT_READ _MD_accept_read
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GETSOCKNAME _MD_getsockname
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GETPEERNAME _MD_getpeername
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GETSOCKOPT _MD_getsockopt
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SETSOCKOPT _MD_setsockopt
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_RECVFROM _MD_recvfrom
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SENDTO _MD_sendto
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SOCKETPAIR _MD_socketpair
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SOCKET _MD_socket
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SOCKETAVAILABLE _MD_socketavailable
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_PIPEAVAILABLE _MD_socketavailable
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GET_SOCKET_ERROR()	(errno)
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GETHOSTNAME _MD_gethostname
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_SELECT select
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Process management */
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CREATE_PROCESS _MD_create_process
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_DETACH_PROCESS _MD_detach_process
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_WAIT_PROCESS _MD_wait_process
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_KILL_PROCESS _MD_kill_process
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Atomic data operations */
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define _MD_INIT_ATOMIC _MD_init_atomic
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define _MD_ATOMIC_INCREMENT _MD_atomic_increment
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define _MD_ATOMIC_DECREMENT _MD_atomic_decrement
3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define _MD_ATOMIC_SET _MD_atomic_set
3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* memory management */
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INIT_SEGS _MD_init_segs
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_ALLOC_SEGMENT _MD_alloc_segment
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_FREE_SEGMENT _MD_free_segment
3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Memory mapped file I/O */
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CREATE_FILE_MAP _MD_create_file_map
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GET_MEM_MAP_ALIGNMENT _MD_get_mem_map_alignment
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_MEM_MAP _MD_mem_map
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_MEM_UNMAP _MD_mem_unmap
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_CLOSE_FILE_MAP _MD_close_file_map
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Time related */
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_NOW _MD_now
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INTERVAL_INIT _MD_interval_init
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_GET_INTERVAL _MD_get_interval
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_INTERVAL_PER_SEC _MD_interval_per_sec
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* File locking */
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_LOCKFILE _MD_lockfile
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_TLOCKFILE _MD_tlockfile
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _MD_UNLOCKFILE _MD_unlockfile
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Prototypes for machine dependent function implementations. (Too bad
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * NSPR's MD system blows so much that we have to reiterate every stinking
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * thing we implement here in our MD header file.)
4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Miscellaneous */
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_cleanup_before_exit(void);
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_exit(PRIntn status);
4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(char*) _MD_get_env(const char *name);
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRIntn) _MD_put_env(const char *name);
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_early_init(void);
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_final_init(void);
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* CPU Stuff */
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_init_cpus();
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_wakeup_cpus();
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_start_interrupts(void);
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_stop_interrupts(void);
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_disable_clock_interrupts(void);
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_block_clock_interrupts(void);
4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_unblock_clock_interrupts(void);
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_clock_interrupt(void);
4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_init_stack(PRThreadStack *ts, PRIntn redzone);
4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_clear_stack(PRThreadStack* ts);
4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(PRInt32) _MD_get_intsoff(void);
4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_set_intsoff(PRInt32 _val);
4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(_PRCPU*) _MD_current_cpu(void);
4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_set_current_cpu(_PRCPU *cpu);
4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_init_running_cpu(_PRCPU *cpu);
4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_pause_cpu(PRIntervalTime timeout);
4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Thread stuff */
4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(PRThread*) _MD_current_thread(void);
4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRThread*) _MD_get_attached_thread(void);
4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRThread*) _MD_last_thread(void);
4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_set_current_thread(PRThread *thread);
4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_set_last_thread(PRThread *thread);
4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_init_thread(PRThread *thread);
4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_exit_thread(PRThread *thread);
4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_init_attached_thread(PRThread *thread);
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_suspend_thread(PRThread *thread);
4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_resume_thread(PRThread *thread);
4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_suspend_cpu(_PRCPU  *cpu);
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_resume_cpu(_PRCPU  *cpu);
4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_begin_suspend_all(void);
4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_end_suspend_all(void);
4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_begin_resume_all(void);
4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_end_resume_all(void);
4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void *) _MD_get_sp(PRThread *thread);
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_clean_thread(PRThread *thread);
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_create_primordial_user_thread(PRThread *);
4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRThread*) _MD_create_user_thread(PRUint32 stacksize, void (*start)(void *), void *arg);
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_init_primordial_thread(PRThread *thread);
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_create_thread(PRThread *thread, void (*start)(void *), PRThreadPriority priority, PRThreadScope scope, PRThreadState state, PRUint32 stackSize);
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_yield(void);
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_set_priority(struct _MDThread *md, PRThreadPriority newPri);
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_suspendall(void);
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_resumeall(void);
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_init_context(PRThread *thread, char *top, void (*start) (void), PRBool *status);
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_switch_context(PRThread *thread);
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_restore_context(PRThread *thread);
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_wait(PRThread *, PRIntervalTime timeout);
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_wakeup_waiter(PRThread *);
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_setthreadaffinitymask(PRThread *thread, PRUint32 mask );
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_getthreadaffinitymask(PRThread *thread, PRUint32 *mask);
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Thread Synchronization */
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_init_locks(void);
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_new_lock(struct _MDLock *md);
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_free_lock(struct _MDLock *md);
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_lock(struct _MDLock *md);
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRIntn) _MD_test_and_lock(struct _MDLock *md);
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_unlock(struct _MDLock *md);
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_ioq_lock(void);
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_ioq_unlock(void);
5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_new_sem(struct _MDSemaphore *md, PRUintn value);
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_destroy_sem(struct _MDSemaphore *md);
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_timed_wait_sem(struct _MDSemaphore *md, PRIntervalTime timeout);
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_wait_sem(struct _MDSemaphore *md);
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_post_sem(struct _MDSemaphore *md);
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(PRInt32) _MD_new_cv(struct _MDCVar *md);
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_free_cv(struct _MDCVar *md);
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_wait_cv(struct _MDCVar *mdCVar, struct _MDLock *mdLock, PRIntervalTime timeout);
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_notify_cv(struct _MDCVar *md, struct _MDLock *lock);
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_notifyall_cv(struct _MDCVar *md, struct _MDLock *lock);
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* File I/O */
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_init_io(void);
5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_open_dir(struct _MDDir *md,const char *name);
5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(char *) _MD_read_dir(struct _MDDir *md, PRIntn flags);
5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_close_dir(struct _MDDir *md);
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_make_nonblock(PRFileDesc *fd);
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_init_fd_inheritable(PRFileDesc *fd, PRBool imported);
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_query_fd_inheritable(PRFileDesc *fd);
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_open(const char *name, PRIntn osflags, PRIntn mode);
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_close_file(PRInt32 osfd);
5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_read(PRFileDesc *fd, void *buf, PRInt32 amount);
5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_write(PRFileDesc *fd, const void *buf, PRInt32 amount);
5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_writev(PRFileDesc *fd, const PRIOVec *iov, PRInt32 iov_size, PRIntervalTime timeout);
5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_lseek(PRFileDesc *fd, PRInt32 offset, int whence);
5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt64) _MD_lseek64(PRFileDesc *fd, PRInt64 offset, int whence);
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_fsync(PRFileDesc *fd);
5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_delete(const char *name);
5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_getfileinfo(const char *fn, PRFileInfo *info);
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_getfileinfo64(const char *fn, PRFileInfo64 *info);
5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_getopenfileinfo(const PRFileDesc *fd, PRFileInfo *info);
5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_getopenfileinfo64(const PRFileDesc *fd, PRFileInfo64 *info);
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_rename(const char *from, const char *to);
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_access(const char *name, PRIntn how);
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_stat(const char *name, struct stat *buf);
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_mkdir(const char *name, PRIntn mode);
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_rmdir(const char *name);
5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_pr_poll(PRPollDesc *pds, PRIntn npds, PRIntervalTime timeout);
5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Network I/O */
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_close_socket(PRInt32 osfd);
5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_connect(PRFileDesc *fd, const PRNetAddr *addr, PRUint32 addrlen, PRIntervalTime timeout);
5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_accept(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen, PRIntervalTime timeout);
5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_bind(PRFileDesc *fd, const PRNetAddr *addr, PRUint32 addrlen);
5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_listen(PRFileDesc *fd, PRIntn backlog);
5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_shutdown(PRFileDesc *fd, PRIntn how);
5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_recv(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags, PRIntervalTime timeout);
5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_send(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags, PRIntervalTime timeout);
5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_accept_read(PRFileDesc *sd, PRInt32 *newSock, PRNetAddr **raddr, void *buf, PRInt32 amount, PRIntervalTime timeout);
5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(PRInt32) _MD_fast_accept(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen, PRIntervalTime timeout, PRBool fast, _PR_AcceptTimeoutCallback callback, void *callbackArg);
5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(PRInt32) _MD_fast_accept_read(PRFileDesc *sd, PRInt32 *newSock, PRNetAddr **raddr, void *buf, PRInt32 amount, PRIntervalTime timeout, PRBool fast, _PR_AcceptTimeoutCallback callback, void *callbackArg);
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_update_accept_context(PRInt32 s, PRInt32 ls);
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_getsockname(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen);
5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_getpeername(PRFileDesc *fd, PRNetAddr *addr, PRUint32 *addrlen);
5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_getsockopt(PRFileDesc *fd, PRInt32 level, PRInt32 optname, char* optval, PRInt32* optlen);
5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_setsockopt(PRFileDesc *fd, PRInt32 level, PRInt32 optname, const char* optval, PRInt32 optlen);
5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_recvfrom(PRFileDesc *fd, void *buf, PRInt32 amount, PRIntn flags, PRNetAddr *addr, PRUint32 *addrlen, PRIntervalTime timeout);
5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_sendto(PRFileDesc *fd, const void *buf, PRInt32 amount, PRIntn flags, const PRNetAddr *addr, PRUint32 addrlen, PRIntervalTime timeout);
5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_socketpair(int af, int type, int flags, PRInt32 *osfd);
5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_socket(int af, int type, int flags);
5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_socketavailable(PRFileDesc *fd);
5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(PRInt32) _MD_get_socket_error(void);
5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_gethostname(char *name, PRUint32 namelen);
5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Process management */
5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRProcess *) _MD_create_process(const char *path, char *const *argv, char *const *envp, const PRProcessAttr *attr);
5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_detach_process(PRProcess *process);
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_wait_process(PRProcess *process, PRInt32 *exitCode);
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_kill_process(PRProcess *process);
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Atomic data operations */
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(void) _MD_init_atomic(void);
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(PRInt32) _MD_atomic_increment(PRInt32 *);
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(PRInt32) _MD_atomic_decrement(PRInt32 *);
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NSPR_API(PRInt32) _MD_atomic_set(PRInt32 *, PRInt32);
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Memory management */
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_init_segs(void);
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_alloc_segment(PRSegment *seg, PRUint32 size, void *vaddr);
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_free_segment(PRSegment *seg);
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Memory mapped file I/O */
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_create_file_map(PRFileMap *fmap, PRInt64 size);
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRInt32) _MD_get_mem_map_alignment(void);
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void *) _MD_mem_map(PRFileMap *fmap, PRInt64 offset, PRUint32 len);
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_mem_unmap(void *addr, PRUint32 size);
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_close_file_map(PRFileMap *fmap);
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Time related */
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRTime) _MD_now(void);
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(void) _MD_interval_init(void);
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRIntervalTime) _MD_get_interval(void);
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRIntervalTime) _MD_interval_per_sec(void);
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* File locking */
6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_lockfile(PRInt32 osfd);
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_tlockfile(PRInt32 osfd);
6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NSPR_API(PRStatus) _MD_unlockfile(PRInt32 osfd);
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* _nspr_beos_defs_h___*/
610