|
|
1.1 ! root 1: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ ! 2: /* ! 3: * The contents of this file are subject to the Mozilla Public ! 4: * License Version 1.1 (the "License"); you may not use this file ! 5: * except in compliance with the License. You may obtain a copy of ! 6: * the License at http://www.mozilla.org/MPL/ ! 7: * ! 8: * Software distributed under the License is distributed on an "AS ! 9: * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or ! 10: * implied. See the License for the specific language governing ! 11: * rights and limitations under the License. ! 12: * ! 13: * The Original Code is the Netscape Portable Runtime (NSPR). ! 14: * ! 15: * The Initial Developer of the Original Code is Netscape ! 16: * Communications Corporation. Portions created by Netscape are ! 17: * Copyright (C) 1998-2000 Netscape Communications Corporation. All ! 18: * Rights Reserved. ! 19: * ! 20: * Contributor(s): ! 21: * ! 22: * Alternatively, the contents of this file may be used under the ! 23: * terms of the GNU General Public License Version 2 or later (the ! 24: * "GPL"), in which case the provisions of the GPL are applicable ! 25: * instead of those above. If you wish to allow use of your ! 26: * version of this file only under the terms of the GPL and not to ! 27: * allow others to use your version of this file under the MPL, ! 28: * indicate your decision by deleting the provisions above and ! 29: * replace them with the notice and other provisions required by ! 30: * the GPL. If you do not delete the provisions above, a recipient ! 31: * may use your version of this file under either the MPL or the ! 32: * GPL. ! 33: */ ! 34: ! 35: /* ! 36: ** A collection of things thought to be obsolete ! 37: */ ! 38: ! 39: #if defined(PROBSLET_H) ! 40: #else ! 41: #define PROBSLET_H ! 42: ! 43: #include "prio.h" ! 44: ! 45: PR_BEGIN_EXTERN_C ! 46: ! 47: /* ! 48: ** Yield the current thread. The proper function to use in place of ! 49: ** PR_Yield() is PR_Sleep() with an argument of PR_INTERVAL_NO_WAIT. ! 50: */ ! 51: NSPR_API(PRStatus) PR_Yield(void); ! 52: ! 53: /************************************************************************/ ! 54: /************* The following definitions are for select *****************/ ! 55: /************************************************************************/ ! 56: ! 57: /* ! 58: ** The following is obsolete and will be deleted in the next release! ! 59: ** These are provided for compatibility, but are GUARANTEED to be slow. ! 60: ** ! 61: ** Override PR_MAX_SELECT_DESC if you need more space in the select set. ! 62: */ ! 63: #ifndef PR_MAX_SELECT_DESC ! 64: #define PR_MAX_SELECT_DESC 1024 ! 65: #endif ! 66: typedef struct PR_fd_set { ! 67: PRUint32 hsize; ! 68: PRFileDesc *harray[PR_MAX_SELECT_DESC]; ! 69: PRUint32 nsize; ! 70: PRInt32 narray[PR_MAX_SELECT_DESC]; ! 71: } PR_fd_set; ! 72: ! 73: /* ! 74: ************************************************************************* ! 75: ** FUNCTION: PR_Select ! 76: ** DESCRIPTION: ! 77: ** ! 78: ** The call returns as soon as I/O is ready on one or more of the underlying ! 79: ** file/socket descriptors or an exceptional condition is pending. A count of the ! 80: ** number of ready descriptors is returned unless a timeout occurs in which case ! 81: ** zero is returned. On return, PR_Select replaces the given descriptor sets with ! 82: ** subsets consisting of those descriptors that are ready for the requested condition. ! 83: ** The total number of ready descriptors in all the sets is the return value. ! 84: ** ! 85: ** INPUTS: ! 86: ** PRInt32 num ! 87: ** This argument is unused but is provided for select(unix) interface ! 88: ** compatability. All input PR_fd_set arguments are self-describing ! 89: ** with its own maximum number of elements in the set. ! 90: ** ! 91: ** PR_fd_set *readfds ! 92: ** A set describing the io descriptors for which ready for reading ! 93: ** condition is of interest. ! 94: ** ! 95: ** PR_fd_set *writefds ! 96: ** A set describing the io descriptors for which ready for writing ! 97: ** condition is of interest. ! 98: ** ! 99: ** PR_fd_set *exceptfds ! 100: ** A set describing the io descriptors for which exception pending ! 101: ** condition is of interest. ! 102: ** ! 103: ** Any of the above readfds, writefds or exceptfds may be given as NULL ! 104: ** pointers if no descriptors are of interest for that particular condition. ! 105: ** ! 106: ** PRIntervalTime timeout ! 107: ** Amount of time the call will block waiting for I/O to become ready. ! 108: ** If this time expires without any I/O becoming ready, the result will ! 109: ** be zero. ! 110: ** ! 111: ** OUTPUTS: ! 112: ** PR_fd_set *readfds ! 113: ** A set describing the io descriptors which are ready for reading. ! 114: ** ! 115: ** PR_fd_set *writefds ! 116: ** A set describing the io descriptors which are ready for writing. ! 117: ** ! 118: ** PR_fd_set *exceptfds ! 119: ** A set describing the io descriptors which have pending exception. ! 120: ** ! 121: ** RETURN:PRInt32 ! 122: ** Number of io descriptors with asked for conditions or zero if the function ! 123: ** timed out or -1 on failure. The reason for the failure is obtained by ! 124: ** calling PR_GetError(). ! 125: ** XXX can we implement this on windoze and mac? ! 126: ************************************************************************** ! 127: */ ! 128: NSPR_API(PRInt32) PR_Select( ! 129: PRInt32 num, PR_fd_set *readfds, PR_fd_set *writefds, ! 130: PR_fd_set *exceptfds, PRIntervalTime timeout); ! 131: ! 132: /* ! 133: ** The following are not thread safe for two threads operating on them at the ! 134: ** same time. ! 135: ** ! 136: ** The following routines are provided for manipulating io descriptor sets. ! 137: ** PR_FD_ZERO(&fdset) initializes a descriptor set fdset to the null set. ! 138: ** PR_FD_SET(fd, &fdset) includes a particular file descriptor fd in fdset. ! 139: ** PR_FD_CLR(fd, &fdset) removes a file descriptor fd from fdset. ! 140: ** PR_FD_ISSET(fd, &fdset) is nonzero if file descriptor fd is a member of ! 141: ** fdset, zero otherwise. ! 142: ** ! 143: ** PR_FD_NSET(osfd, &fdset) includes a particular native file descriptor osfd ! 144: ** in fdset. ! 145: ** PR_FD_NCLR(osfd, &fdset) removes a native file descriptor osfd from fdset. ! 146: ** PR_FD_NISSET(osfd, &fdset) is nonzero if native file descriptor osfd is a member of ! 147: ** fdset, zero otherwise. ! 148: */ ! 149: ! 150: NSPR_API(void) PR_FD_ZERO(PR_fd_set *set); ! 151: NSPR_API(void) PR_FD_SET(PRFileDesc *fd, PR_fd_set *set); ! 152: NSPR_API(void) PR_FD_CLR(PRFileDesc *fd, PR_fd_set *set); ! 153: NSPR_API(PRInt32) PR_FD_ISSET(PRFileDesc *fd, PR_fd_set *set); ! 154: NSPR_API(void) PR_FD_NSET(PRInt32 osfd, PR_fd_set *set); ! 155: NSPR_API(void) PR_FD_NCLR(PRInt32 osfd, PR_fd_set *set); ! 156: NSPR_API(PRInt32) PR_FD_NISSET(PRInt32 osfd, PR_fd_set *set); ! 157: ! 158: #ifndef NO_NSPR_10_SUPPORT ! 159: #ifdef XP_MAC ! 160: #include <stat.h> ! 161: #else ! 162: #include <sys/stat.h> ! 163: #endif ! 164: ! 165: NSPR_API(PRInt32) PR_Stat(const char *path, struct stat *buf); ! 166: #endif /* NO_NSPR_10_SUPPORT */ ! 167: ! 168: PR_END_EXTERN_C ! 169: ! 170: #endif /* defined(PROBSLET_H) */ ! 171: ! 172: /* probslet.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.