view src/gpf/osl/os_drv.c @ 198:712a28fda778
init.c: sync with Magnetite
This change affects only the D-Sample target which is not supported
in Selenite, but we need to keep the diff down.
author |
Mychaela Falconia <falcon@freecalypso.org> |
date |
Thu, 28 May 2020 05:33:05 +0000 (2020-05-28) |
parents |
8b2a9a374324 |
children |
|
line source
/*
* This C module is a reconstruction based on the disassembly of
* os_drv.obj in frame_na7_db_fl.lib from the Leonardo package.
*/
/* set of included headers from COFF symtab: */
#include "nucleus.h"
#include "typedefs.h"
#include "gdi.h"
#include "os.h"
typedef unsigned char u_char;
extern OS_HANDLE os_ext_pool_handle;
static u_char *HISR_Stack;
static T_DRV_SIGNAL *SignalID;
static void (*DrvCallback)(T_DRV_SIGNAL *);
static NU_HISR CallBack_HISR;
#define CB_HISR_STACK_SIZE 1024
GLOBAL LONG
os_ExecuteCallback(OS_HANDLE Caller, void (*Callback)(T_DRV_SIGNAL *),
T_DRV_SIGNAL *Signal)
{
DrvCallback = Callback;
SignalID = Signal;
NU_Activate_HISR(&CallBack_HISR);
return(OS_OK);
}
static void
CallbackFunc(void)
{
DrvCallback(SignalID);
}
GLOBAL LONG
os_CreateCallback(void)
{
if (os_AllocateMemory(OS_NOTASK, (T_VOID_STRUCT **) &HISR_Stack,
CB_HISR_STACK_SIZE, 0xFFFFFFFF,
os_ext_pool_handle) == OS_ERROR)
return(OS_ERROR);
if (NU_Create_HISR(&CallBack_HISR, "CB_HISR", CallbackFunc, 2,
HISR_Stack, CB_HISR_STACK_SIZE) == NU_SUCCESS)
return(OS_OK);
else
return(OS_ERROR);
}