enhanced callback functions for os2

This commit is contained in:
hyunghwan.chung 2018-11-06 06:24:59 +00:00
parent 72f500e73b
commit 65a702a88b
4 changed files with 48 additions and 7 deletions

View File

@ -421,7 +421,7 @@ class MyObject(Object)
[ [
| ss | | ss |
httpd start: %( httpd start: %(
SocketAddress fromString: ('[::]:' & base_port asString), ## SocketAddress fromString: ('[::]:' & base_port asString),
SocketAddress fromString: ('0.0.0.0:' & (base_port + 1) asString) SocketAddress fromString: ('0.0.0.0:' & (base_port + 1) asString)
). ).
@ -463,7 +463,7 @@ httpd connect: addr.
[ [
| ss | | ss |
httpd start: %( httpd start: %(
SocketAddress fromString: '[::]:7777', ## SocketAddress fromString: '[::]:7777',
SocketAddress fromString: '0.0.0.0:7776' SocketAddress fromString: '0.0.0.0:7776'
). ).

View File

@ -84,6 +84,7 @@ class MyObject(Object)
[Exception hash dump] ensure: ['xxxx' dump]. [Exception hash dump] ensure: ['xxxx' dump].
] on: Exception do: [:ex | ('Exception caught - ' & ex asString) dump ].*) ] on: Exception do: [:ex | ('Exception caught - ' & ex asString) dump ].*)
(*
ffi := FFI new: '/lib64/libc.so.6'. ffi := FFI new: '/lib64/libc.so.6'.
if (ffi isError) if (ffi isError)
{ {
@ -96,6 +97,7 @@ class MyObject(Object)
(ffi call: #printf signature: 's|iis)i' arguments: #(S'A=>%d B=>%d Hello, world %s\n' 1 2 'jump down')) dump. (ffi call: #printf signature: 's|iis)i' arguments: #(S'A=>%d B=>%d Hello, world %s\n' 1 2 'jump down')) dump.
ffi close. ffi close.
}. }.
*)
(('abcd' == 'abcd') ifTrue: [1] ifFalse: [2]) dump. (('abcd' == 'abcd') ifTrue: [1] ifFalse: [2]) dump.
} }

View File

@ -61,6 +61,7 @@
#elif defined(__OS2__) #elif defined(__OS2__)
# define INCL_DOSMODULEMGR # define INCL_DOSMODULEMGR
# define INCL_DOSPROCESS # define INCL_DOSPROCESS
# define INCL_DOSSEMAPHORES
# define INCL_DOSEXCEPTIONS # define INCL_DOSEXCEPTIONS
# define INCL_DOSMISC # define INCL_DOSMISC
# define INCL_DOSDATETIME # define INCL_DOSDATETIME
@ -2588,6 +2589,44 @@ static VOID CALLBACK arrange_process_switching (LPVOID arg, DWORD timeLow, DWORD
if (g_moo) moo_switchprocess (g_moo); if (g_moo) moo_switchprocess (g_moo);
} }
#elif defined(__OS2__)
static TID g_tick_tid;
static HEV g_tick_sem;
static HTIMER g_tick_timer;
static int g_tick_done = 0;
static void EXPENTRY os2_wait_for_timer_event (ULONG x)
{
APIRET rc;
ULONG count;
rc = DosCreateEventSem (NULL, &g_tick_sem, DC_SEM_SHARED, FALSE);
if (rc != NO_ERROR)
{
/* xxxx */
}
rc = DosStartTimer (1L, (HSEM)g_tick_sem, &g_tick_timer);
if (rc != NO_ERROR)
{
}
while (!g_tick_done)
{
rc = DosWaitEventSem((HSEM)g_tick_sem, 5000L);
DosResetEventSem((HSEM)g_tick_sem, &count);
if (g_moo) moo_switchprocess (g_moo);
}
DosStopTimer (g_tick_timer);
DosCloseEventSem ((HSEM)g_tick_sem);
g_tick_timer = NULL;
g_tick_sem = NULL;
DosExit (EXIT_THREAD, 0);
}
#elif defined(macintosh) #elif defined(macintosh)
static TMTask g_tmtask; static TMTask g_tmtask;
@ -2627,8 +2666,8 @@ static void setup_tick (void)
} }
#elif defined(__OS2__) #elif defined(__OS2__)
/* TODO: */ /* TODO: Error check */
#error UNSUPPORTED DosCreateThread (&g_tick_tid, os2_wait_for_timer_event, 0, 0, 4096);
#elif defined(macintosh) #elif defined(macintosh)
@ -2677,8 +2716,8 @@ static void cancel_tick (void)
} }
#elif defined(__OS2__) #elif defined(__OS2__)
/* TODO: */ if (g_tick_sem) DosPostEventSem (g_tick_sem);
#error UNSUPPORTED g_tick_done = 1;
#elif defined(macintosh) #elif defined(macintosh)
RmvTime ((QElem*)&g_tmtask); RmvTime ((QElem*)&g_tmtask);