More header updates
This commit is contained in:
parent
51380847d6
commit
3aa787d696
2 changed files with 139 additions and 111 deletions
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* UAE - The Un*x Amiga Emulator
|
||||
*
|
||||
* bsdsocket.library emulation
|
||||
|
@ -13,8 +13,8 @@
|
|||
#include "uae/types.h"
|
||||
#include "thread.h"
|
||||
|
||||
extern int init_socket_layer (void);
|
||||
extern void deinit_socket_layer (void);
|
||||
extern int init_socket_layer(void);
|
||||
extern void deinit_socket_layer(void);
|
||||
|
||||
/* initial size of per-process descriptor table (currently fixed) */
|
||||
#define DEFAULT_DTABLE_SIZE 64
|
||||
|
@ -32,40 +32,41 @@ extern void deinit_socket_layer (void);
|
|||
#endif
|
||||
|
||||
/* allocated and maintained on a per-task basis */
|
||||
struct socketbase {
|
||||
struct socketbase *next;
|
||||
struct socketbase *nextsig; /* queue for tasks to signal */
|
||||
struct socketbase
|
||||
{
|
||||
struct socketbase* next;
|
||||
struct socketbase* nextsig; /* queue for tasks to signal */
|
||||
|
||||
uaecptr sysbase;
|
||||
int dosignal; /* signal flag */
|
||||
uae_u32 ownertask; /* task that opened the library */
|
||||
int signal; /* signal allocated for that task */
|
||||
int sb_errno, sb_herrno; /* errno and herrno variables */
|
||||
uae_u32 errnoptr, herrnoptr; /* pointers */
|
||||
uae_u32 errnosize, herrnosize; /* pinter sizes */
|
||||
int dtablesize; /* current descriptor/flag etc. table size */
|
||||
SOCKET_TYPE *dtable; /* socket descriptor table */
|
||||
int *ftable; /* socket flags */
|
||||
int resultval;
|
||||
uae_u32 hostent; /* pointer to the current hostent structure (Amiga mem) */
|
||||
uae_u32 hostentsize;
|
||||
uae_u32 protoent; /* pointer to the current protoent structure (Amiga mem) */
|
||||
uae_u32 protoentsize;
|
||||
uae_u32 servent; /* pointer to the current servent structure (Amiga mem) */
|
||||
uae_u32 serventsize;
|
||||
uae_u32 sigstosend;
|
||||
uae_u32 eventsigs; /* EVENT sigmask */
|
||||
uae_u32 eintrsigs; /* EINTR sigmask */
|
||||
int eintr; /* interrupted by eintrsigs? */
|
||||
int eventindex; /* current socket looked at by GetSocketEvents() to prevent starvation */
|
||||
uaecptr sysbase;
|
||||
int dosignal; /* signal flag */
|
||||
uae_u32 ownertask; /* task that opened the library */
|
||||
int signal; /* signal allocated for that task */
|
||||
int sb_errno, sb_herrno; /* errno and herrno variables */
|
||||
uae_u32 errnoptr, herrnoptr; /* pointers */
|
||||
uae_u32 errnosize, herrnosize; /* pinter sizes */
|
||||
int dtablesize; /* current descriptor/flag etc. table size */
|
||||
SOCKET_TYPE* dtable; /* socket descriptor table */
|
||||
int* ftable; /* socket flags */
|
||||
int resultval;
|
||||
uae_u32 hostent; /* pointer to the current hostent structure (Amiga mem) */
|
||||
uae_u32 hostentsize;
|
||||
uae_u32 protoent; /* pointer to the current protoent structure (Amiga mem) */
|
||||
uae_u32 protoentsize;
|
||||
uae_u32 servent; /* pointer to the current servent structure (Amiga mem) */
|
||||
uae_u32 serventsize;
|
||||
uae_u32 sigstosend;
|
||||
uae_u32 eventsigs; /* EVENT sigmask */
|
||||
uae_u32 eintrsigs; /* EINTR sigmask */
|
||||
int eintr; /* interrupted by eintrsigs? */
|
||||
int eventindex; /* current socket looked at by GetSocketEvents() to prevent starvation */
|
||||
uae_u32 logstat;
|
||||
uae_u32 logptr;
|
||||
uae_u32 logmask;
|
||||
uae_u32 logfacility;
|
||||
uaecptr fdcallback;
|
||||
|
||||
unsigned int *mtable; /* window messages allocated for asynchronous event notification */
|
||||
/* host-specific fields below */
|
||||
unsigned int* mtable; /* window messages allocated for asynchronous event notification */
|
||||
/* host-specific fields below */
|
||||
#ifdef _WIN32
|
||||
SOCKET_TYPE sockAbort; /* for aborting WinSock2 select() (damn Microsoft) */
|
||||
SOCKET_TYPE sockAsync; /* for aborting WSBAsyncSelect() in window message handler */
|
||||
|
@ -73,32 +74,35 @@ struct socketbase {
|
|||
void *hAsyncTask; /* async task handle */
|
||||
void *hEvent; /* thread event handle */
|
||||
#else
|
||||
uae_sem_t sem; /* semaphore to notify the socket thread of work */
|
||||
uae_thread_id thread; /* socket thread */
|
||||
int sockabort[2]; /* pipe used to tell the thread to abort a select */
|
||||
int action;
|
||||
int s; /* for accept */
|
||||
uae_u32 name; /* For gethostbyname */
|
||||
uae_u32 a_addr; /* gethostbyaddr, accept */
|
||||
uae_u32 a_addrlen; /* for gethostbyaddr, accept */
|
||||
uae_u32 flags;
|
||||
void *buf;
|
||||
uae_u32 len;
|
||||
uae_u32 to, tolen, from, fromlen;
|
||||
int nfds;
|
||||
uae_u32 sets [3];
|
||||
uae_u32 timeout;
|
||||
uae_u32 sigmp;
|
||||
uae_sem_t sem; /* semaphore to notify the socket thread of work */
|
||||
uae_thread_id thread; /* socket thread */
|
||||
int sockabort[2]; /* pipe used to tell the thread to abort a select */
|
||||
int action;
|
||||
int s; /* for accept */
|
||||
uae_u32 name; /* For gethostbyname */
|
||||
uae_u32 a_addr; /* gethostbyaddr, accept */
|
||||
uae_u32 a_addrlen; /* for gethostbyaddr, accept */
|
||||
uae_u32 flags;
|
||||
void* buf;
|
||||
uae_u32 len;
|
||||
uae_u32 to, tolen, from, fromlen;
|
||||
int nfds;
|
||||
uae_u32 sets[3];
|
||||
uae_u32 timeout;
|
||||
uae_u32 sigmp;
|
||||
#endif
|
||||
#ifdef AMIBERRY
|
||||
TrapContext* context;
|
||||
#endif
|
||||
TrapContext *context;
|
||||
};
|
||||
|
||||
#define LIBRARY_SIZEOF 36
|
||||
|
||||
struct UAEBSDBase {
|
||||
uae_u8 dummy[LIBRARY_SIZEOF];
|
||||
struct socketbase *sb;
|
||||
uae_u8 scratchbuf[SCRATCHBUFSIZE];
|
||||
struct UAEBSDBase
|
||||
{
|
||||
uae_u8 dummy[LIBRARY_SIZEOF];
|
||||
struct socketbase* sb;
|
||||
uae_u8 scratchbuf[SCRATCHBUFSIZE];
|
||||
};
|
||||
|
||||
/* socket flags */
|
||||
|
@ -129,79 +133,79 @@ struct UAEBSDBase {
|
|||
#define FDCB_ALLOC 1
|
||||
#define FDCB_CHECK 2
|
||||
|
||||
uae_u32 addstr(TrapContext *ctx, uae_u32 * dst, const TCHAR *src);
|
||||
uae_u32 addstr_ansi(TrapContext *ctx, uae_u32 * dst, const uae_char *src);
|
||||
uae_u32 strncpyha(TrapContext *ctx, uae_u32 dst, const uae_char *src, int size);
|
||||
uae_u32 addmem(TrapContext *ctx, uae_u32 * dst, const uae_char *src, int len);
|
||||
uae_u32 addstr(TrapContext* ctx, uae_u32* dst, const TCHAR* src);
|
||||
uae_u32 addstr_ansi(TrapContext* ctx, uae_u32* dst, const uae_char* src);
|
||||
uae_u32 strncpyha(TrapContext* ctx, uae_u32 dst, const uae_char* src, int size);
|
||||
uae_u32 addmem(TrapContext* ctx, uae_u32* dst, const uae_char* src, int len);
|
||||
|
||||
#define SB struct socketbase *sb
|
||||
|
||||
extern void bsdsocklib_seterrno(TrapContext*, SB, int);
|
||||
extern void bsdsocklib_setherrno(TrapContext*, SB, int);
|
||||
|
||||
extern void sockabort (SB);
|
||||
extern void sockabort(SB);
|
||||
|
||||
extern void addtosigqueue (SB, int);
|
||||
extern void removefromsigqueue (SB);
|
||||
extern void sigsockettasks (void);
|
||||
extern void locksigqueue (void);
|
||||
extern void unlocksigqueue (void);
|
||||
extern void addtosigqueue(SB, int);
|
||||
extern void removefromsigqueue(SB);
|
||||
extern void sigsockettasks(void);
|
||||
extern void locksigqueue(void);
|
||||
extern void unlocksigqueue(void);
|
||||
|
||||
extern bool checksd(TrapContext*, SB, int sd);
|
||||
extern void setsd(TrapContext*, SB, int , SOCKET_TYPE);
|
||||
extern int getsd (TrapContext*, SB, SOCKET_TYPE);
|
||||
extern SOCKET_TYPE getsock (TrapContext*, SB, int);
|
||||
extern void releasesock (TrapContext*, SB, int);
|
||||
extern void setsd(TrapContext*, SB, int, SOCKET_TYPE);
|
||||
extern int getsd(TrapContext*, SB, SOCKET_TYPE);
|
||||
extern SOCKET_TYPE getsock(TrapContext*, SB, int);
|
||||
extern void releasesock(TrapContext*, SB, int);
|
||||
|
||||
extern void waitsig (TrapContext *context, SB);
|
||||
extern void cancelsig (TrapContext *context, SB);
|
||||
extern void waitsig(TrapContext* context, SB);
|
||||
extern void cancelsig(TrapContext* context, SB);
|
||||
|
||||
extern int host_sbinit (TrapContext*, SB);
|
||||
extern void host_sbcleanup (SB);
|
||||
extern void host_sbreset (void);
|
||||
extern void host_closesocketquick (SOCKET_TYPE);
|
||||
extern int host_sbinit(TrapContext*, SB);
|
||||
extern void host_sbcleanup(SB);
|
||||
extern void host_sbreset(void);
|
||||
extern void host_closesocketquick(SOCKET_TYPE);
|
||||
|
||||
extern int host_dup2socket (TrapContext *, SB, int, int);
|
||||
extern int host_socket (TrapContext *, SB, int, int, int);
|
||||
extern uae_u32 host_bind (TrapContext *, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_listen (TrapContext *, SB, uae_u32, uae_u32);
|
||||
extern void host_accept (TrapContext *, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern void host_sendto (TrapContext *, SB, uae_u32, uae_u32, uae_u8*, uae_u32, uae_u32, uae_u32, uae_u32);
|
||||
extern void host_recvfrom (TrapContext *, SB, uae_u32, uae_u32, uae_u8*, uae_u32, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_shutdown (SB, uae_u32, uae_u32);
|
||||
extern void host_setsockopt (SB, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_getsockopt (TrapContext *, SB, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_getsockname (TrapContext *, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_getpeername (TrapContext *, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_IoctlSocket (TrapContext *, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern int host_CloseSocket (TrapContext *, SB, int);
|
||||
extern void host_connect (TrapContext *, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern void host_WaitSelect (TrapContext *, SB, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_SetSocketSignals (void);
|
||||
extern uae_u32 host_getdtablesize (void);
|
||||
extern uae_u32 host_ObtainSocket (void);
|
||||
extern uae_u32 host_ReleaseSocket (void);
|
||||
extern uae_u32 host_ReleaseCopyOfSocket (void);
|
||||
extern uae_u32 host_Inet_NtoA(TrapContext *ctx, SB, uae_u32);
|
||||
extern uae_u32 host_inet_addr(TrapContext *ctx, uae_u32);
|
||||
extern uae_u32 host_Inet_LnaOf (void);
|
||||
extern uae_u32 host_Inet_NetOf (void);
|
||||
extern uae_u32 host_Inet_MakeAddr (void);
|
||||
extern uae_u32 host_inet_network (void);
|
||||
extern void host_gethostbynameaddr (TrapContext *, SB, uae_u32, uae_u32, long);
|
||||
extern uae_u32 host_getnetbyname (void);
|
||||
extern uae_u32 host_getnetbyaddr (void);
|
||||
extern void host_getservbynameport (TrapContext *, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern void host_getprotobyname (TrapContext *, SB, uae_u32);
|
||||
extern void host_getprotobynumber (TrapContext *, SB, uae_u32);
|
||||
extern uae_u32 host_vsyslog (void);
|
||||
extern uae_u32 host_Dup2Socket (void);
|
||||
extern uae_u32 host_gethostname(TrapContext *ctx, uae_u32, uae_u32);
|
||||
extern uae_u32 callfdcallback(TrapContext *context, SB, uae_u32 fd, uae_u32 action);
|
||||
extern int host_dup2socket(TrapContext*, SB, int, int);
|
||||
extern int host_socket(TrapContext*, SB, int, int, int);
|
||||
extern uae_u32 host_bind(TrapContext*, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_listen(TrapContext*, SB, uae_u32, uae_u32);
|
||||
extern void host_accept(TrapContext*, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern void host_sendto(TrapContext*, SB, uae_u32, uae_u32, uae_u8*, uae_u32, uae_u32, uae_u32, uae_u32);
|
||||
extern void host_recvfrom(TrapContext*, SB, uae_u32, uae_u32, uae_u8*, uae_u32, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_shutdown(SB, uae_u32, uae_u32);
|
||||
extern void host_setsockopt(SB, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_getsockopt(TrapContext*, SB, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_getsockname(TrapContext*, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_getpeername(TrapContext*, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_IoctlSocket(TrapContext*, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern int host_CloseSocket(TrapContext*, SB, int);
|
||||
extern void host_connect(TrapContext*, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern void host_WaitSelect(TrapContext*, SB, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32, uae_u32);
|
||||
extern uae_u32 host_SetSocketSignals(void);
|
||||
extern uae_u32 host_getdtablesize(void);
|
||||
extern uae_u32 host_ObtainSocket(void);
|
||||
extern uae_u32 host_ReleaseSocket(void);
|
||||
extern uae_u32 host_ReleaseCopyOfSocket(void);
|
||||
extern uae_u32 host_Inet_NtoA(TrapContext* ctx, SB, uae_u32);
|
||||
extern uae_u32 host_inet_addr(TrapContext* ctx, uae_u32);
|
||||
extern uae_u32 host_Inet_LnaOf(void);
|
||||
extern uae_u32 host_Inet_NetOf(void);
|
||||
extern uae_u32 host_Inet_MakeAddr(void);
|
||||
extern uae_u32 host_inet_network(void);
|
||||
extern void host_gethostbynameaddr(TrapContext*, SB, uae_u32, uae_u32, long);
|
||||
extern uae_u32 host_getnetbyname(void);
|
||||
extern uae_u32 host_getnetbyaddr(void);
|
||||
extern void host_getservbynameport(TrapContext*, SB, uae_u32, uae_u32, uae_u32);
|
||||
extern void host_getprotobyname(TrapContext*, SB, uae_u32);
|
||||
extern void host_getprotobynumber(TrapContext*, SB, uae_u32);
|
||||
extern uae_u32 host_vsyslog(void);
|
||||
extern uae_u32 host_Dup2Socket(void);
|
||||
extern uae_u32 host_gethostname(TrapContext* ctx, uae_u32, uae_u32);
|
||||
extern uae_u32 callfdcallback(TrapContext* context, SB, uae_u32 fd, uae_u32 action);
|
||||
|
||||
extern uaecptr bsdlib_startup (TrapContext*, uaecptr);
|
||||
extern void bsdlib_install (void);
|
||||
extern void bsdlib_reset (void);
|
||||
extern uaecptr bsdlib_startup(TrapContext*, uaecptr);
|
||||
extern void bsdlib_install(void);
|
||||
extern void bsdlib_reset(void);
|
||||
|
||||
void bsdsock_fake_int_handler(void);
|
||||
|
||||
|
|
|
@ -3,6 +3,29 @@
|
|||
|
||||
#include "uae/types.h"
|
||||
|
||||
#define MAX_SHMID 256
|
||||
|
||||
typedef int uae_key_t;
|
||||
|
||||
/* One shmid data structure for each shared memory segment in the system. */
|
||||
struct uae_shmid_ds {
|
||||
uae_key_t key;
|
||||
uae_u32 size;
|
||||
uae_u32 rosize;
|
||||
void* addr;
|
||||
TCHAR name[MAX_DPATH];
|
||||
void* attached;
|
||||
int mode;
|
||||
void* natmembase;
|
||||
bool fake;
|
||||
int maprom;
|
||||
};
|
||||
|
||||
void* uae_shmat(addrbank* ab, int shmid, void* shmaddr, int shmflg, struct uae_mman_data* md);
|
||||
int uae_shmdt(const void* shmaddr);
|
||||
int uae_shmget(uae_key_t key, addrbank* ab, int shmflg);
|
||||
int uae_shmctl(int shmid, int cmd, struct uae_shmid_ds* buf);
|
||||
|
||||
#define UAE_IPC_PRIVATE 0x01
|
||||
#define UAE_IPC_RMID 0x02
|
||||
#define UAE_IPC_CREAT 0x04
|
||||
|
@ -14,6 +37,7 @@ struct uae_mman_data
|
|||
uae_u32 size;
|
||||
bool readonly;
|
||||
uae_u32 readonlysize;
|
||||
bool maprom;
|
||||
bool directsupport;
|
||||
bool hasbarrier;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue