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

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