 /*
  * UAE - The Un*x Amiga Emulator
  *
  * OS emulation prototypes
  *
  * Copyright 1996 Bernd Schmidt
  */


extern void EXEC_NewList(CPTR list);
extern void EXEC_Insert(CPTR list, CPTR node, CPTR pred);
extern void EXEC_AddTail(CPTR list, CPTR node);
extern void EXEC_Enqueue(CPTR list, CPTR node);
extern void EXEC_Remove(CPTR node);
extern ULONG EXEC_RemHead(CPTR list);
extern ULONG EXEC_RemTail(CPTR list);
extern CPTR EXEC_FindName(CPTR start, char *name);

extern CPTR EXEC_Allocate(CPTR memheader, unsigned long size);
extern CPTR EXEC_AllocMem(unsigned long size, ULONG requirements);
extern void EXEC_FreeMem(CPTR, unsigned long);
extern void EXEC_Deallocate(CPTR, CPTR, unsigned long);
extern void EXEC_FreeMem(CPTR, unsigned long);
extern unsigned long EXEC_AvailMem(ULONG requirements);
extern void EXEC_AddMemList(unsigned long, ULONG, int, CPTR, CPTR);
extern void EXEC_InitStruct(CPTR inittable, CPTR memory, unsigned long size);

extern CPTR EXEC_SetIntVector(int number, CPTR interrupt);
extern void EXEC_RemIntServer(ULONG nr, CPTR interrupt);
extern void EXEC_AddIntServer(ULONG nr, CPTR interrupt);

extern int EXEC_AllocSignal(int signum);
extern void EXEC_FreeSignal(int signum);
extern void EXEC_InitSemaphore(CPTR sigsem);
extern CPTR EXEC_GetMsg(CPTR port);
extern void EXEC_SumLibrary(CPTR lib);
extern CPTR EXEC_SetFunction(CPTR lib, int funcOffset, CPTR function);
extern void EXEC_MakeFunctions(CPTR target, CPTR funcarray, CPTR funcdispb);
extern CPTR EXEC_MakeLibrary(CPTR, CPTR, CPTR, unsigned long, ULONG);
extern void EXEC_AddLibrary(CPTR lib);
extern void EXEC_AddDevice(CPTR lib);
extern void EXEC_AddResource(CPTR lib);

extern CPTR EXEC_FindTask(char *name);

extern ULONG EXEC_Permit(void);
extern ULONG EXEC_Forbid(void);
extern ULONG EXEC_Disable(void);
extern ULONG EXEC_Enable(void);

extern LONG EXEC_WaitIO(CPTR ioreq);
extern void EXEC_DoIO(CPTR ioreq);
extern void EXEC_SendIO(CPTR ioreq);
extern CPTR EXEC_CheckIO(CPTR ioreq);

/* These require a multi-tasking EXEC emulation */
extern void EXEC_InitSemaphore(CPTR exec_sigsem);
extern ULONG EXEC_AttemptSemaphore(CPTR exec_sigsem);
extern void EXEC_ObtainSemaphore(CPTR exec_sigsem);
extern void EXEC_ReleaseSemaphore(CPTR exec_sigsem);

extern CPTR EXEC_OpenLibrary(char *name, int version);
extern CPTR EXEC_OpenResource(char *name);
extern CPTR EXEC_OpenDevice(char *name, ULONG unit, CPTR ioRequest, ULONG flags);

extern CPTR EXEC_AddTask(CPTR task, CPTR initPC, CPTR finalPC);

extern ULONG EXEC_SetSignal(ULONG newsig, ULONG exec_sigmask);
extern void EXEC_Signal(CPTR task, ULONG exec_sigmask);

extern void EXEC_PutMsg(CPTR port, CPTR msg);
extern void EXEC_ReplyMsg(CPTR msg);
extern CPTR EXEC_WaitPort(CPTR port);

/* graphics.library */
extern int GFX_WritePixel(CPTR rp, int x, int y);

