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