Annotation of uae/src/include/bsdsocket.h, revision 1.1.1.3

1.1       root        1:  /*
                      2:   * UAE - The Un*x Amiga Emulator
                      3:   *
                      4:   * bsdsocket.library emulation
                      5:   *
                      6:   * Copyright 1997,98 Mathias Ortmann
                      7:   *
                      8:   */
                      9: 
1.1.1.3 ! root       10: //#define BSDSOCKET
        !            11: //#define TRACING_ENABLED
1.1       root       12: 
                     13: #ifdef TRACING_ENABLED
1.1.1.3 ! root       14: #define TRACE(x) do { write_log x; } while(0)
1.1       root       15: #else
                     16: #define TRACE(x)
                     17: #endif
                     18: 
                     19: extern int init_socket_layer (void);
                     20: extern void deinit_socket_layer (void);
                     21: 
                     22: /* inital size of per-process descriptor table (currently fixed) */
                     23: #define DEFAULT_DTABLE_SIZE 64
                     24: 
                     25: #define SCRATCHBUFSIZE 128
                     26: 
                     27: #define MAXPENDINGASYNC 512
                     28: 
                     29: #define MAXADDRLEN 256
                     30: 
                     31: /* allocated and maintained on a per-task basis */
                     32: struct socketbase {
                     33:     struct socketbase *next;
                     34:     struct socketbase *nextsig;        /* queue for tasks to signal */
                     35: 
                     36:     int dosignal;              /* signal flag */
                     37:     uae_u32 ownertask;         /* task that opened the library */
                     38:     int signal;                        /* signal allocated for that task */
                     39:     int sb_errno, sb_herrno;   /* errno and herrno variables */
                     40:     uae_u32 errnoptr, herrnoptr;       /* pointers */
                     41:     uae_u32 errnosize, herrnosize;     /* pinter sizes */
                     42:     int dtablesize;            /* current descriptor/flag etc. table size */
                     43:     int *dtable;               /* socket descriptor table */
                     44:     int *ftable;               /* socket flags */
                     45:     int resultval;
                     46:     uae_u32 hostent;           /* pointer to the current hostent structure (Amiga mem) */
                     47:     uae_u32 hostentsize;
                     48:     uae_u32 protoent;          /* pointer to the current protoent structure (Amiga mem) */
                     49:     uae_u32 protoentsize;
                     50:     uae_u32 servent;           /* pointer to the current servent structure (Amiga mem) */
                     51:     uae_u32 serventsize;
                     52:     uae_u32 sigstosend;
                     53:     uae_u32 eventsigs;         /* EVENT sigmask */
                     54:     uae_u32 eintrsigs;         /* EINTR sigmask */
                     55:     int eintr;                 /* interrupted by eintrsigs? */
                     56:     int eventindex;            /* current socket looked at by GetSocketEvents() to prevent starvation */
                     57: 
                     58:     /* host-specific fields below */
                     59: #ifdef _WIN32
                     60:     unsigned int sockAbort;    /* for aborting WinSock2 select() (damn Microsoft) */
                     61:     unsigned int sockAsync;    /* for aborting WSBAsyncSelect() in window message handler */
                     62:     int needAbort;             /* abort flag */
                     63:     void *hAsyncTask;          /* async task handle */
                     64:     void *hEvent;              /* thread event handle */
                     65:     unsigned int *mtable;      /* window messages allocated for asynchronous event notification */
1.1.1.3 ! root       66: #else
        !            67:     uae_sem_t sem;             /* semaphore to notify the socket thread of work */
        !            68:     uae_thread_id thread;      /* socket thread */
        !            69:     int  sockabort[2];         /* pipe used to tell the thread to abort a select */
        !            70:     int action;
        !            71:     int s;                     /* for accept */
        !            72:     uae_u32 name;              /* For gethostbyname */
        !            73:     uae_u32 a_addr;            /* gethostbyaddr, accept */
        !            74:     uae_u32 a_addrlen;         /* for gethostbyaddr, accept */
        !            75:     uae_u32 flags;
        !            76:     void *buf;
        !            77:     uae_u32 len;
        !            78:     uae_u32 to, tolen, from, fromlen;
        !            79:     int nfds;
        !            80:     uae_u32 sets [3];
        !            81:     uae_u32 timeout;
        !            82:     uae_u32 sigmp;
1.1       root       83: #endif
1.1.1.3 ! root       84: } *socketbases;
1.1       root       85: 
                     86: 
                     87: #define LIBRARY_SIZEOF 36
                     88: 
                     89: struct UAEBSDBase {
                     90:     char dummy[LIBRARY_SIZEOF];
                     91:     struct socketbase *sb;
                     92:     char scratchbuf[SCRATCHBUFSIZE];
                     93: };
                     94: 
                     95: /* socket flags */
                     96: /* socket events to report */
                     97: #define REP_ACCEPT      0x01   /* there is a connection to accept() */
                     98: #define REP_CONNECT     0x02   /* connect() completed */
                     99: #define REP_OOB                 0x04   /* socket has out-of-band data */
                    100: #define REP_READ        0x08   /* socket is readable */
                    101: #define REP_WRITE       0x10   /* socket is writeable */
                    102: #define REP_ERROR       0x20   /* asynchronous error on socket */
                    103: #define REP_CLOSE       0x40   /* connection closed (graceful or not) */
                    104: #define REP_ALL      0x7f
                    105: /* socket events that occurred */
                    106: #define SET_ACCEPT      0x0100 /* there is a connection to accept() */
                    107: #define SET_CONNECT     0x0200 /* connect() completed */
                    108: #define SET_OOB                 0x0400 /* socket has out-of-band data */
                    109: #define SET_READ        0x0800 /* socket is readable */
                    110: #define SET_WRITE       0x1000 /* socket is writeable */
                    111: #define SET_ERROR       0x2000 /* asynchronous error on socket */
                    112: #define SET_CLOSE       0x4000 /* connection closed (graceful or not) */
                    113: #define SET_ALL      0x7f00
                    114: /* socket properties */
                    115: #define SF_BLOCKING 0x80000000
                    116: #define SF_BLOCKINGINPROGRESS 0x40000000
                    117: 
                    118: 
1.1.1.3 ! root      119: extern uae_u32 addstr (uae_u32 *, const char *);
        !           120: extern uae_u32 addmem (uae_u32 *, const char *, int len);
1.1       root      121: 
                    122: #define SB struct socketbase *sb
                    123: 
1.1.1.3 ! root      124: #ifndef _WIN32
        !           125: typedef int SOCKET;
        !           126: #define INVALID_SOCKET -1
        !           127: #endif
        !           128: 
        !           129: extern void bsdsocklib_seterrno (SB, int);
        !           130: extern void bsdsocklib_setherrno (SB, int);
1.1       root      131: 
                    132: extern void sockmsg (unsigned int, unsigned long, unsigned long);
                    133: extern void sockabort (SB);
                    134: 
                    135: extern void addtosigqueue (SB, int);
                    136: extern void removefromsigqueue (SB);
                    137: extern void sigsockettasks (void);
                    138: extern void locksigqueue (void);
                    139: extern void unlocksigqueue (void);
                    140: 
1.1.1.3 ! root      141: #define BOOL int
        !           142: extern BOOL checksd(SB, int sd);
        !           143: extern void setsd(SB, int ,int );
1.1       root      144: extern int getsd (SB, int);
                    145: extern int getsock (SB, int);
                    146: extern void releasesock (SB, int);
                    147: 
1.1.1.3 ! root      148: extern void waitsig (TrapContext *context, SB);
        !           149: extern void cancelsig (TrapContext *context, SB);
1.1       root      150: 
1.1.1.3 ! root      151: extern int host_sbinit (TrapContext *, SB);
1.1       root      152: extern void host_sbcleanup (SB);
                    153: extern void host_sbreset (void);
                    154: extern void host_closesocketquick (int);
                    155: 
1.1.1.3 ! root      156: extern int host_dup2socket (SB, int, int);
1.1       root      157: extern int host_socket (SB, int, int, int);
                    158: extern uae_u32 host_bind (SB, uae_u32, uae_u32, uae_u32);
                    159: extern uae_u32 host_listen (SB, uae_u32, uae_u32);
1.1.1.3 ! root      160: extern void host_accept (TrapContext *, SB, uae_u32, uae_u32, uae_u32);
        !           161: extern void host_sendto (TrapContext *, SB, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32);
        !           162: extern void host_recvfrom (TrapContext *, SB, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32);
1.1       root      163: extern uae_u32 host_shutdown (SB, uae_u32, uae_u32);
                    164: extern void host_setsockopt (SB, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32);
                    165: extern uae_u32 host_getsockopt (SB, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32);
                    166: extern uae_u32 host_getsockname (SB, uae_u32, uae_u32, uae_u32);
                    167: extern uae_u32 host_getpeername (SB, uae_u32, uae_u32, uae_u32);
                    168: extern uae_u32 host_IoctlSocket (SB, uae_u32, uae_u32, uae_u32);
                    169: extern uae_u32 host_shutdown (SB, uae_u32, uae_u32);
                    170: extern int host_CloseSocket (SB, int);
1.1.1.3 ! root      171: extern void host_connect (TrapContext *, SB, uae_u32, uae_u32, uae_u32);
        !           172: extern void host_WaitSelect (TrapContext *, SB, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32);
1.1       root      173: extern uae_u32 host_SetSocketSignals (void);
                    174: extern uae_u32 host_getdtablesize (void);
                    175: extern uae_u32 host_ObtainSocket (void);
                    176: extern uae_u32 host_ReleaseSocket (void);
                    177: extern uae_u32 host_ReleaseCopyOfSocket (void);
1.1.1.3 ! root      178: extern uae_u32 host_Inet_NtoA (TrapContext *context, SB, uae_u32);
1.1       root      179: extern uae_u32 host_inet_addr (uae_u32);
                    180: extern uae_u32 host_Inet_LnaOf (void);
                    181: extern uae_u32 host_Inet_NetOf (void);
                    182: extern uae_u32 host_Inet_MakeAddr (void);
                    183: extern uae_u32 host_inet_network (void);
1.1.1.3 ! root      184: extern void host_gethostbynameaddr (TrapContext *, SB, uae_u32, uae_u32, long);
1.1       root      185: extern uae_u32 host_getnetbyname (void);
                    186: extern uae_u32 host_getnetbyaddr (void);
1.1.1.3 ! root      187: extern void host_getservbynameport (TrapContext *, SB, uae_u32, uae_u32, uae_u32);
        !           188: extern void host_getprotobyname (TrapContext *, SB, uae_u32);
        !           189: extern void host_getprotobynumber (TrapContext *, SB, uae_u32);
1.1       root      190: extern uae_u32 host_vsyslog (void);
                    191: extern uae_u32 host_Dup2Socket (void);
                    192: extern uae_u32 host_gethostname (uae_u32, uae_u32);
                    193: 
                    194: 
                    195: extern void bsdlib_install (void);
                    196: extern void bsdlib_reset (void);

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.