From 96744530f04f630e1026d4c3523c6234d7590472 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Fri, 2 Oct 2015 03:21:20 +0000 Subject: [PATCH] added qse_setintrhandler() & qse_clearintrhandler() --- qse/bld/msdos-watcom/makefile | 12 +++ qse/bld/os2-watcom/makefile | 24 +++++ qse/bld/qse.bkl | 3 + qse/bld/win32-borland/makefile | 24 +++++ qse/bld/win32-msvc/makefile | 24 +++++ qse/bld/win32-watcom/makefile | 24 +++++ qse/include/qse/sys/Makefile.am | 1 + qse/include/qse/sys/Makefile.in | 4 +- qse/include/qse/sys/cnd.h | 29 +++--- qse/include/qse/sys/intr.h | 52 ++++++++++ qse/include/qse/sys/mtx.h | 24 ++--- qse/include/qse/sys/rwl.h | 28 +++--- qse/include/qse/sys/thr.h | 52 +++++----- qse/lib/sys/Makefile.am | 1 + qse/lib/sys/Makefile.in | 4 +- qse/lib/sys/cnd.c | 2 +- qse/lib/sys/intr.c | 162 ++++++++++++++++++++++++++++++++ qse/lib/sys/mtx.c | 2 +- qse/lib/sys/rwl.c | 4 +- qse/lib/sys/thr.c | 62 ++++++++++-- qse/lib/sys/thr.h | 10 +- qse/samples/sys/rwl01.c | 37 +++++--- 22 files changed, 492 insertions(+), 93 deletions(-) create mode 100644 qse/include/qse/sys/intr.h create mode 100644 qse/lib/sys/intr.c diff --git a/qse/bld/msdos-watcom/makefile b/qse/bld/msdos-watcom/makefile index ba555fcf..3e36ac8c 100644 --- a/qse/bld/msdos-watcom/makefile +++ b/qse/bld/msdos-watcom/makefile @@ -309,6 +309,7 @@ LIBQSESYS_CFLAGS = $(____DOS_CFLAG_p) -i=..\..\include $(CPPFLAGS_BUILD) & -ox $(CPPFLAGS) $(CFLAGS) LIBQSESYS_OBJECTS = & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsesys_cnd.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsesys_intr.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsesys_mtx.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsesys_rwl.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsesys_thr.obj @@ -367,6 +368,8 @@ LIBQSEXLI_OBJECTS = & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsexli_err.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsexli_read.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsexli_write.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsexli_read_ini.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsexli_write_ini.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsexli_std.obj EXEQSEAWK_CFLAGS = $(____DOS_CFLAG_p) -i=..\..\include $(CPPFLAGS_BUILD) & $(CPPFLAGS_CHAR) $(CPPFLAGS_XCMGRS) $(CPPFLAGS_BUNDLED_UNICODE) & @@ -837,6 +840,9 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsecmn_uni.ob $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsesys_cnd.obj : .AUTODEPEND ..\..\lib\sys\cnd.c $(CC) -bt=dos -zq -fo=$^@ $(LIBQSESYS_CFLAGS) $< +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsesys_intr.obj : .AUTODEPEND ..\..\lib\sys\intr.c + $(CC) -bt=dos -zq -fo=$^@ $(LIBQSESYS_CFLAGS) $< + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsesys_mtx.obj : .AUTODEPEND ..\..\lib\sys\mtx.c $(CC) -bt=dos -zq -fo=$^@ $(LIBQSESYS_CFLAGS) $< @@ -951,6 +957,12 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsexli_read.o $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsexli_write.obj : .AUTODEPEND ..\..\lib\xli\write.c $(CC) -bt=dos -zq -fo=$^@ $(LIBQSEXLI_CFLAGS) $< +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsexli_read_ini.obj : .AUTODEPEND ..\..\lib\xli\read-ini.c + $(CC) -bt=dos -zq -fo=$^@ $(LIBQSEXLI_CFLAGS) $< + +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsexli_write_ini.obj : .AUTODEPEND ..\..\lib\xli\write-ini.c + $(CC) -bt=dos -zq -fo=$^@ $(LIBQSEXLI_CFLAGS) $< + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-static$(BUILDDIR_TCPV40HDRS)\libqsexli_std.obj : .AUTODEPEND ..\..\lib\xli\std.c $(CC) -bt=dos -zq -fo=$^@ $(LIBQSEXLI_CFLAGS) $< diff --git a/qse/bld/os2-watcom/makefile b/qse/bld/os2-watcom/makefile index af56f4b7..bdf090bd 100644 --- a/qse/bld/os2-watcom/makefile +++ b/qse/bld/os2-watcom/makefile @@ -537,6 +537,7 @@ DLLQSESYS_CFLAGS = -bd -i=..\..\include $(CPPFLAGS_BUILD) $(CPPFLAGS_CHAR) & $(CPPFLAGS_TCPV40HDRS) -wx $(__DEBUG_INFO) -bm -ot -ox $(CPPFLAGS) $(CFLAGS) DLLQSESYS_OBJECTS = & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_cnd.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_intr.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_mtx.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_rwl.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_thr.obj @@ -545,6 +546,7 @@ LIBQSESYS_CFLAGS = -i=..\..\include $(CPPFLAGS_BUILD) $(CPPFLAGS_CHAR) & $(CPPFLAGS_TCPV40HDRS) -wx $(__DEBUG_INFO) -bm -ot -ox $(CPPFLAGS) $(CFLAGS) LIBQSESYS_OBJECTS = & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_cnd.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_intr.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_mtx.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_rwl.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_thr.obj @@ -659,6 +661,8 @@ DLLQSEXLI_OBJECTS = & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_err.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_read.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_read_ini.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write_ini.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_std.obj LIBQSEXLI_CFLAGS = -i=..\..\include $(CPPFLAGS_BUILD) $(CPPFLAGS_CHAR) & $(CPPFLAGS_XCMGRS) $(CPPFLAGS_BUNDLED_UNICODE) $(CPPFLAGS_STATIC_MODULE) & @@ -668,6 +672,8 @@ LIBQSEXLI_OBJECTS = & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_err.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_read.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_read_ini.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write_ini.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_std.obj EXEQSEAWK_CFLAGS = -i=..\..\include $(CPPFLAGS_BUILD) $(CPPFLAGS_CHAR) & $(CPPFLAGS_XCMGRS) $(CPPFLAGS_BUNDLED_UNICODE) $(CPPFLAGS_STATIC_MODULE) & @@ -1709,6 +1715,9 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_cnd.obj : .AUTODEPEND ..\..\lib\sys\cnd.c $(CC) -bt=os2 -zq -fo=$^@ $(DLLQSESYS_CFLAGS) $< +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_intr.obj : .AUTODEPEND ..\..\lib\sys\intr.c + $(CC) -bt=os2 -zq -fo=$^@ $(DLLQSESYS_CFLAGS) $< + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_mtx.obj : .AUTODEPEND ..\..\lib\sys\mtx.c $(CC) -bt=os2 -zq -fo=$^@ $(DLLQSESYS_CFLAGS) $< @@ -1721,6 +1730,9 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_cnd.obj : .AUTODEPEND ..\..\lib\sys\cnd.c $(CC) -bt=os2 -zq -fo=$^@ $(LIBQSESYS_CFLAGS) $< +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_intr.obj : .AUTODEPEND ..\..\lib\sys\intr.c + $(CC) -bt=os2 -zq -fo=$^@ $(LIBQSESYS_CFLAGS) $< + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_mtx.obj : .AUTODEPEND ..\..\lib\sys\mtx.c $(CC) -bt=os2 -zq -fo=$^@ $(LIBQSESYS_CFLAGS) $< @@ -1943,6 +1955,12 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write.obj : .AUTODEPEND ..\..\lib\xli\write.c $(CC) -bt=os2 -zq -fo=$^@ $(DLLQSEXLI_CFLAGS) $< +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_read_ini.obj : .AUTODEPEND ..\..\lib\xli\read-ini.c + $(CC) -bt=os2 -zq -fo=$^@ $(DLLQSEXLI_CFLAGS) $< + +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write_ini.obj : .AUTODEPEND ..\..\lib\xli\write-ini.c + $(CC) -bt=os2 -zq -fo=$^@ $(DLLQSEXLI_CFLAGS) $< + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_std.obj : .AUTODEPEND ..\..\lib\xli\std.c $(CC) -bt=os2 -zq -fo=$^@ $(DLLQSEXLI_CFLAGS) $< @@ -1958,6 +1976,12 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write.obj : .AUTODEPEND ..\..\lib\xli\write.c $(CC) -bt=os2 -zq -fo=$^@ $(LIBQSEXLI_CFLAGS) $< +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_read_ini.obj : .AUTODEPEND ..\..\lib\xli\read-ini.c + $(CC) -bt=os2 -zq -fo=$^@ $(LIBQSEXLI_CFLAGS) $< + +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write_ini.obj : .AUTODEPEND ..\..\lib\xli\write-ini.c + $(CC) -bt=os2 -zq -fo=$^@ $(LIBQSEXLI_CFLAGS) $< + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_std.obj : .AUTODEPEND ..\..\lib\xli\std.c $(CC) -bt=os2 -zq -fo=$^@ $(LIBQSEXLI_CFLAGS) $< diff --git a/qse/bld/qse.bkl b/qse/bld/qse.bkl index 1714df57..8fa51244 100644 --- a/qse/bld/qse.bkl +++ b/qse/bld/qse.bkl @@ -257,6 +257,7 @@ cnd.c + intr.c mtx.c rwl.c thr.c @@ -307,6 +308,8 @@ err.c read.c write.c + read-ini.c + write-ini.c std.c diff --git a/qse/bld/win32-borland/makefile b/qse/bld/win32-borland/makefile index 336d52cc..e32281ed 100644 --- a/qse/bld/win32-borland/makefile +++ b/qse/bld/win32-borland/makefile @@ -297,6 +297,7 @@ DLLQSESYS_CFLAGS = -I$(BCCDIR)\include -I..\..\include $(CPPFLAGS_BUILD) \ $(CPPFLAGS) $(CFLAGS) DLLQSESYS_OBJECTS = \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_cnd.obj \ + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_intr.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_mtx.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_rwl.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_thr.obj @@ -306,6 +307,7 @@ LIBQSESYS_CFLAGS = -I$(BCCDIR)\include -I..\..\include $(CPPFLAGS_BUILD) \ $(CPPFLAGS) $(CFLAGS) LIBQSESYS_OBJECTS = \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_cnd.obj \ + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_intr.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_mtx.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_rwl.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_thr.obj @@ -432,6 +434,8 @@ DLLQSEXLI_OBJECTS = \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_err.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_read.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write.obj \ + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_read_ini.obj \ + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write_ini.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_std.obj LIBQSEXLI_CFLAGS = -I$(BCCDIR)\include -I..\..\include $(CPPFLAGS_BUILD) \ $(CPPFLAGS_CHAR) $(CPPFLAGS_XCMGRS) $(CPPFLAGS_BUNDLED_UNICODE) \ @@ -442,6 +446,8 @@ LIBQSEXLI_OBJECTS = \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_err.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_read.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write.obj \ + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_read_ini.obj \ + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write_ini.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_std.obj EXEQSEAWK_CFLAGS = -I$(BCCDIR)\include -I..\..\include $(CPPFLAGS_BUILD) \ $(CPPFLAGS_CHAR) $(CPPFLAGS_XCMGRS) $(CPPFLAGS_BUNDLED_UNICODE) \ @@ -1656,6 +1662,9 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_cnd.obj: ..\..\lib\sys\cnd.c $(CC) -q -c -P- -o$@ $(DLLQSESYS_CFLAGS) ..\..\lib\sys\cnd.c +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_intr.obj: ..\..\lib\sys\intr.c + $(CC) -q -c -P- -o$@ $(DLLQSESYS_CFLAGS) ..\..\lib\sys\intr.c + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_mtx.obj: ..\..\lib\sys\mtx.c $(CC) -q -c -P- -o$@ $(DLLQSESYS_CFLAGS) ..\..\lib\sys\mtx.c @@ -1668,6 +1677,9 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_cnd.obj: ..\..\lib\sys\cnd.c $(CC) -q -c -P- -o$@ $(LIBQSESYS_CFLAGS) ..\..\lib\sys\cnd.c +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_intr.obj: ..\..\lib\sys\intr.c + $(CC) -q -c -P- -o$@ $(LIBQSESYS_CFLAGS) ..\..\lib\sys\intr.c + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_mtx.obj: ..\..\lib\sys\mtx.c $(CC) -q -c -P- -o$@ $(LIBQSESYS_CFLAGS) ..\..\lib\sys\mtx.c @@ -1890,6 +1902,12 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write.obj: ..\..\lib\xli\write.c $(CC) -q -c -P- -o$@ $(DLLQSEXLI_CFLAGS) ..\..\lib\xli\write.c +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_read_ini.obj: ..\..\lib\xli\read-ini.c + $(CC) -q -c -P- -o$@ $(DLLQSEXLI_CFLAGS) ..\..\lib\xli\read-ini.c + +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write_ini.obj: ..\..\lib\xli\write-ini.c + $(CC) -q -c -P- -o$@ $(DLLQSEXLI_CFLAGS) ..\..\lib\xli\write-ini.c + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_std.obj: ..\..\lib\xli\std.c $(CC) -q -c -P- -o$@ $(DLLQSEXLI_CFLAGS) ..\..\lib\xli\std.c @@ -1905,6 +1923,12 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write.obj: ..\..\lib\xli\write.c $(CC) -q -c -P- -o$@ $(LIBQSEXLI_CFLAGS) ..\..\lib\xli\write.c +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_read_ini.obj: ..\..\lib\xli\read-ini.c + $(CC) -q -c -P- -o$@ $(LIBQSEXLI_CFLAGS) ..\..\lib\xli\read-ini.c + +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write_ini.obj: ..\..\lib\xli\write-ini.c + $(CC) -q -c -P- -o$@ $(LIBQSEXLI_CFLAGS) ..\..\lib\xli\write-ini.c + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_std.obj: ..\..\lib\xli\std.c $(CC) -q -c -P- -o$@ $(LIBQSEXLI_CFLAGS) ..\..\lib\xli\std.c diff --git a/qse/bld/win32-msvc/makefile b/qse/bld/win32-msvc/makefile index b0a3bdfe..8523eafb 100644 --- a/qse/bld/win32-msvc/makefile +++ b/qse/bld/win32-msvc/makefile @@ -270,6 +270,7 @@ DLLQSESYS_CFLAGS = /MD$(__DEBUG_INFO_3_0) /DWIN32 /I..\..\include \ /O2 $(CPPFLAGS) $(CFLAGS) DLLQSESYS_OBJECTS = \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_cnd.obj \ + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_intr.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_mtx.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_rwl.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_thr.obj @@ -281,6 +282,7 @@ LIBQSESYS_CFLAGS = /MD$(__DEBUG_INFO_3_0) /DWIN32 /I..\..\include \ /O2 $(CPPFLAGS) $(CFLAGS) LIBQSESYS_OBJECTS = \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_cnd.obj \ + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_intr.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_mtx.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_rwl.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_thr.obj @@ -431,6 +433,8 @@ DLLQSEXLI_OBJECTS = \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_err.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_read.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write.obj \ + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_read_ini.obj \ + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write_ini.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_std.obj LIBQSEXLI_CFLAGS = /MD$(__DEBUG_INFO_3_0) /DWIN32 /I..\..\include \ $(CPPFLAGS_BUILD) $(CPPFLAGS_CHAR) $(CPPFLAGS_XCMGRS) \ @@ -443,6 +447,8 @@ LIBQSEXLI_OBJECTS = \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_err.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_read.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write.obj \ + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_read_ini.obj \ + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write_ini.obj \ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_std.obj EXEQSEAWK_CFLAGS = /MD$(__DEBUG_INFO_3_0) /DWIN32 /I..\..\include \ $(CPPFLAGS_BUILD) $(CPPFLAGS_CHAR) $(CPPFLAGS_XCMGRS) \ @@ -1741,6 +1747,9 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_cnd.obj: ..\..\lib\sys\cnd.c $(CC) /c /nologo /TC /Fo$@ $(DLLQSESYS_CFLAGS) ..\..\lib\sys\cnd.c +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_intr.obj: ..\..\lib\sys\intr.c + $(CC) /c /nologo /TC /Fo$@ $(DLLQSESYS_CFLAGS) ..\..\lib\sys\intr.c + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_mtx.obj: ..\..\lib\sys\mtx.c $(CC) /c /nologo /TC /Fo$@ $(DLLQSESYS_CFLAGS) ..\..\lib\sys\mtx.c @@ -1753,6 +1762,9 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_cnd.obj: ..\..\lib\sys\cnd.c $(CC) /c /nologo /TC /Fo$@ $(LIBQSESYS_CFLAGS) ..\..\lib\sys\cnd.c +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_intr.obj: ..\..\lib\sys\intr.c + $(CC) /c /nologo /TC /Fo$@ $(LIBQSESYS_CFLAGS) ..\..\lib\sys\intr.c + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_mtx.obj: ..\..\lib\sys\mtx.c $(CC) /c /nologo /TC /Fo$@ $(LIBQSESYS_CFLAGS) ..\..\lib\sys\mtx.c @@ -1975,6 +1987,12 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write.obj: ..\..\lib\xli\write.c $(CC) /c /nologo /TC /Fo$@ $(DLLQSEXLI_CFLAGS) ..\..\lib\xli\write.c +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_read_ini.obj: ..\..\lib\xli\read-ini.c + $(CC) /c /nologo /TC /Fo$@ $(DLLQSEXLI_CFLAGS) ..\..\lib\xli\read-ini.c + +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write_ini.obj: ..\..\lib\xli\write-ini.c + $(CC) /c /nologo /TC /Fo$@ $(DLLQSEXLI_CFLAGS) ..\..\lib\xli\write-ini.c + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_std.obj: ..\..\lib\xli\std.c $(CC) /c /nologo /TC /Fo$@ $(DLLQSEXLI_CFLAGS) ..\..\lib\xli\std.c @@ -1990,6 +2008,12 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write.obj: ..\..\lib\xli\write.c $(CC) /c /nologo /TC /Fo$@ $(LIBQSEXLI_CFLAGS) ..\..\lib\xli\write.c +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_read_ini.obj: ..\..\lib\xli\read-ini.c + $(CC) /c /nologo /TC /Fo$@ $(LIBQSEXLI_CFLAGS) ..\..\lib\xli\read-ini.c + +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write_ini.obj: ..\..\lib\xli\write-ini.c + $(CC) /c /nologo /TC /Fo$@ $(LIBQSEXLI_CFLAGS) ..\..\lib\xli\write-ini.c + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_std.obj: ..\..\lib\xli\std.c $(CC) /c /nologo /TC /Fo$@ $(LIBQSEXLI_CFLAGS) ..\..\lib\xli\std.c diff --git a/qse/bld/win32-watcom/makefile b/qse/bld/win32-watcom/makefile index 6a0d4b62..96e6c133 100644 --- a/qse/bld/win32-watcom/makefile +++ b/qse/bld/win32-watcom/makefile @@ -526,6 +526,7 @@ DLLQSESYS_CFLAGS = -bd -i=..\..\include $(CPPFLAGS_BUILD) $(CPPFLAGS_CHAR) & $(CPPFLAGS_TCPV40HDRS) -wx $(__DEBUG_INFO) -bm -ot -ox $(CPPFLAGS) $(CFLAGS) DLLQSESYS_OBJECTS = & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_cnd.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_intr.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_mtx.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_rwl.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_thr.obj @@ -534,6 +535,7 @@ LIBQSESYS_CFLAGS = -i=..\..\include $(CPPFLAGS_BUILD) $(CPPFLAGS_CHAR) & $(CPPFLAGS_TCPV40HDRS) -wx $(__DEBUG_INFO) -bm -ot -ox $(CPPFLAGS) $(CFLAGS) LIBQSESYS_OBJECTS = & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_cnd.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_intr.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_mtx.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_rwl.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_thr.obj @@ -648,6 +650,8 @@ DLLQSEXLI_OBJECTS = & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_err.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_read.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_read_ini.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write_ini.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_std.obj LIBQSEXLI_CFLAGS = -i=..\..\include $(CPPFLAGS_BUILD) $(CPPFLAGS_CHAR) & $(CPPFLAGS_XCMGRS) $(CPPFLAGS_BUNDLED_UNICODE) $(CPPFLAGS_STATIC_MODULE) & @@ -657,6 +661,8 @@ LIBQSEXLI_OBJECTS = & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_err.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_read.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_read_ini.obj & + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write_ini.obj & $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_std.obj EXEQSEAWK_CFLAGS = -i=..\..\include $(CPPFLAGS_BUILD) $(CPPFLAGS_CHAR) & $(CPPFLAGS_XCMGRS) $(CPPFLAGS_BUNDLED_UNICODE) $(CPPFLAGS_STATIC_MODULE) & @@ -1698,6 +1704,9 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_cnd.obj : .AUTODEPEND ..\..\lib\sys\cnd.c $(CC) -bt=nt -zq -fo=$^@ $(DLLQSESYS_CFLAGS) $< +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_intr.obj : .AUTODEPEND ..\..\lib\sys\intr.c + $(CC) -bt=nt -zq -fo=$^@ $(DLLQSESYS_CFLAGS) $< + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsesys_mtx.obj : .AUTODEPEND ..\..\lib\sys\mtx.c $(CC) -bt=nt -zq -fo=$^@ $(DLLQSESYS_CFLAGS) $< @@ -1710,6 +1719,9 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_cnd.obj : .AUTODEPEND ..\..\lib\sys\cnd.c $(CC) -bt=nt -zq -fo=$^@ $(LIBQSESYS_CFLAGS) $< +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_intr.obj : .AUTODEPEND ..\..\lib\sys\intr.c + $(CC) -bt=nt -zq -fo=$^@ $(LIBQSESYS_CFLAGS) $< + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsesys_mtx.obj : .AUTODEPEND ..\..\lib\sys\mtx.c $(CC) -bt=nt -zq -fo=$^@ $(LIBQSESYS_CFLAGS) $< @@ -1932,6 +1944,12 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write.obj : .AUTODEPEND ..\..\lib\xli\write.c $(CC) -bt=nt -zq -fo=$^@ $(DLLQSEXLI_CFLAGS) $< +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_read_ini.obj : .AUTODEPEND ..\..\lib\xli\read-ini.c + $(CC) -bt=nt -zq -fo=$^@ $(DLLQSEXLI_CFLAGS) $< + +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_write_ini.obj : .AUTODEPEND ..\..\lib\xli\write-ini.c + $(CC) -bt=nt -zq -fo=$^@ $(DLLQSEXLI_CFLAGS) $< + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\dllqsexli_std.obj : .AUTODEPEND ..\..\lib\xli\std.c $(CC) -bt=nt -zq -fo=$^@ $(DLLQSEXLI_CFLAGS) $< @@ -1947,6 +1965,12 @@ $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libq $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write.obj : .AUTODEPEND ..\..\lib\xli\write.c $(CC) -bt=nt -zq -fo=$^@ $(LIBQSEXLI_CFLAGS) $< +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_read_ini.obj : .AUTODEPEND ..\..\lib\xli\read-ini.c + $(CC) -bt=nt -zq -fo=$^@ $(LIBQSEXLI_CFLAGS) $< + +$(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_write_ini.obj : .AUTODEPEND ..\..\lib\xli\write-ini.c + $(CC) -bt=nt -zq -fo=$^@ $(LIBQSEXLI_CFLAGS) $< + $(BUILDDIR_BUILD)-$(BUILDDIR_CHAR)-$(BUILDDIR_SHARED)$(BUILDDIR_TCPV40HDRS)\libqsexli_std.obj : .AUTODEPEND ..\..\lib\xli\std.c $(CC) -bt=nt -zq -fo=$^@ $(LIBQSEXLI_CFLAGS) $< diff --git a/qse/include/qse/sys/Makefile.am b/qse/include/qse/sys/Makefile.am index e7d45b44..551d4153 100644 --- a/qse/include/qse/sys/Makefile.am +++ b/qse/include/qse/sys/Makefile.am @@ -2,6 +2,7 @@ pkgincludedir = $(includedir)/qse/sys pkginclude_HEADERS = \ cnd.h \ + intr.h \ mtx.h \ rwl.h \ thr.h diff --git a/qse/include/qse/sys/Makefile.in b/qse/include/qse/sys/Makefile.in index 708174c9..250f6929 100644 --- a/qse/include/qse/sys/Makefile.in +++ b/qse/include/qse/sys/Makefile.in @@ -117,7 +117,7 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac -am__pkginclude_HEADERS_DIST = cnd.h mtx.h rwl.h thr.h \ +am__pkginclude_HEADERS_DIST = cnd.h intr.h mtx.h rwl.h thr.h \ SocketAddress.hpp am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -344,7 +344,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -pkginclude_HEADERS = cnd.h mtx.h rwl.h thr.h $(am__append_1) +pkginclude_HEADERS = cnd.h intr.h mtx.h rwl.h thr.h $(am__append_1) all: all-am .SUFFIXES: diff --git a/qse/include/qse/sys/cnd.h b/qse/include/qse/sys/cnd.h index d4a6f680..127ef7bc 100644 --- a/qse/include/qse/sys/cnd.h +++ b/qse/include/qse/sys/cnd.h @@ -24,8 +24,8 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _QSE_CMN_CND_H_ -#define _QSE_CMN_CND_H_ +#ifndef _QSE_SYS_CND_H_ +#define _QSE_SYS_CND_H_ #include #include @@ -100,45 +100,44 @@ struct qse_cnd_t extern "C" { #endif - -qse_cnd_t* qse_cnd_open ( +QSE_EXPORT qse_cnd_t* qse_cnd_open ( qse_mmgr_t* mmgr, qse_size_t xtnsize ); -void qse_cnd_close ( +QSE_EXPORT void qse_cnd_close ( qse_cnd_t* cnd ); -int qse_cnd_init ( +QSE_EXPORT int qse_cnd_init ( qse_cnd_t* cnd, qse_mmgr_t* mmgr ); -void qse_cnd_fini ( +QSE_EXPORT void qse_cnd_fini ( qse_cnd_t* cnd ); -qse_mmgr_t* qse_cnd_getmmgr ( +QSE_EXPORT qse_mmgr_t* qse_cnd_getmmgr ( qse_cnd_t* cnd ); -void* qse_cnd_getxtn ( +QSE_EXPORT void* qse_cnd_getxtn ( qse_cnd_t* cnd ); -void qse_cnd_signal ( +QSE_EXPORT void qse_cnd_signal ( qse_cnd_t* cond ); -void qse_cnd_broadcast ( +QSE_EXPORT void qse_cnd_broadcast ( qse_cnd_t* cond ); -void qse_cnd_wait ( - qse_cnd_t* cond, - qse_mtx_t* mutex, - qse_ntime_t* waiting_time +QSE_EXPORT void qse_cnd_wait ( + qse_cnd_t* cond, + qse_mtx_t* mutex, + const qse_ntime_t* waiting_time ); #ifdef __cplusplus diff --git a/qse/include/qse/sys/intr.h b/qse/include/qse/sys/intr.h new file mode 100644 index 00000000..03945a27 --- /dev/null +++ b/qse/include/qse/sys/intr.h @@ -0,0 +1,52 @@ +/* + * $Id$ + * + Copyright (c) 2006-2014 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EQSERESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#ifndef _QSE_SYS_INTR_H_ +#define _QSE_SYS_INTR_H_ + +#include +#include + +/** \file + * This file provides simple console interrupt handler management routines. + */ + +typedef void (*qse_intr_handler_t) (void *arg); + + +#ifdef __cplusplus +extern "C" { +#endif + +QSE_EXPORT void qse_setintrhandler (qse_intr_handler_t handler, void* arg); +QSE_EXPORT void qse_clearintrhandler (void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/sys/mtx.h b/qse/include/qse/sys/mtx.h index b254246b..124d6d65 100644 --- a/qse/include/qse/sys/mtx.h +++ b/qse/include/qse/sys/mtx.h @@ -25,8 +25,8 @@ */ -#ifndef _QSE_CMN_MTX_H_ -#define _QSE_CMN_MTX_H_ +#ifndef _QSE_SYS_MTX_H_ +#define _QSE_SYS_MTX_H_ #include #include @@ -92,38 +92,38 @@ struct qse_mtx_t extern "C" { #endif -qse_mtx_t* qse_mtx_open ( +QSE_EXPORT qse_mtx_t* qse_mtx_open ( qse_mmgr_t* mmgr, qse_size_t xtnsize ); -void qse_mtx_close ( +QSE_EXPORT void qse_mtx_close ( qse_mtx_t* mtx ); -int qse_mtx_init ( +QSE_EXPORT int qse_mtx_init ( qse_mtx_t* mtx, qse_mmgr_t* mmgr ); -void qse_mtx_fini ( +QSE_EXPORT void qse_mtx_fini ( qse_mtx_t* mtx ); -qse_mmgr_t* qse_mtx_getmmgr ( +QSE_EXPORT qse_mmgr_t* qse_mtx_getmmgr ( qse_mtx_t* mtx ); -void* qse_mtx_getxtn ( +QSE_EXPORT void* qse_mtx_getxtn ( qse_mtx_t* mtx ); -int qse_mtx_lock ( - qse_mtx_t* mtx, - qse_ntime_t* waiting_time +QSE_EXPORT int qse_mtx_lock ( + qse_mtx_t* mtx, + const qse_ntime_t* waiting_time ); -int qse_mtx_unlock ( +QSE_EXPORT int qse_mtx_unlock ( qse_mtx_t* mtx ); diff --git a/qse/include/qse/sys/rwl.h b/qse/include/qse/sys/rwl.h index 940e7e31..c0c8b770 100644 --- a/qse/include/qse/sys/rwl.h +++ b/qse/include/qse/sys/rwl.h @@ -59,49 +59,49 @@ typedef struct qse_rwl_t qse_rwl_t; extern "C" { #endif -qse_rwl_t* qse_rwl_open ( +QSE_EXPORT qse_rwl_t* qse_rwl_open ( qse_mmgr_t* mmgr, qse_size_t xtnsize, int flags ); -void qse_rwl_close ( +QSE_EXPORT void qse_rwl_close ( qse_rwl_t* rwl ); -int qse_rwl_init ( +QSE_EXPORT int qse_rwl_init ( qse_rwl_t* rwl, qse_mmgr_t* mmgr, int flags ); -void qse_rwl_fini ( +QSE_EXPORT void qse_rwl_fini ( qse_rwl_t* rwl ); -qse_mmgr_t* qse_rwl_getmmgr ( +QSE_EXPORT qse_mmgr_t* qse_rwl_getmmgr ( qse_rwl_t* rwl ); -void* qse_rwl_getxtn ( +QSE_EXPORT void* qse_rwl_getxtn ( qse_rwl_t* rwl ); -int qse_rwl_lockr ( - qse_rwl_t* rwl, - qse_ntime_t* waiting_time +QSE_EXPORT int qse_rwl_lockr ( + qse_rwl_t* rwl, + const qse_ntime_t* waiting_time ); -int qse_rwl_unlockr ( +QSE_EXPORT int qse_rwl_unlockr ( qse_rwl_t* rwl ); -int qse_rwl_lockw ( - qse_rwl_t* rwl, - qse_ntime_t* waiting_time +QSE_EXPORT int qse_rwl_lockw ( + qse_rwl_t* rwl, + const qse_ntime_t* waiting_time ); -int qse_rwl_unlockw ( +QSE_EXPORT int qse_rwl_unlockw ( qse_rwl_t* rwl ); diff --git a/qse/include/qse/sys/thr.h b/qse/include/qse/sys/thr.h index cbfe1cb9..4fc5a625 100644 --- a/qse/include/qse/sys/thr.h +++ b/qse/include/qse/sys/thr.h @@ -61,16 +61,20 @@ typedef enum qse_thr_flag_t qse_thr_flag_t; #if defined(_WIN32) /* => typedef PVOID HANDLE; */ typedef void* qse_thr_hnd_t; -#elif defined(__OS2__) - /* not implemented */ -# error not implemented +#elif defined(__OS2__) + /* typedef unsigned long LHANDLE + * typedef LHANDLE TID */ + typedef unsigned long qse_thr_hnd_t; + #elif defined(__DOS__) /* not implemented */ # error not implemented + #elif defined(__BEOS__) /*typedef thread_id qse_thr_hnd_t;*/ typdef qse_int32_t qse_thr_hnd_t; + #else #if (QSE_SIZEOF_PTHREAD_T == QSE_SIZEOF_INT) #if defined(QSE_PTHREAD_T_IS_SIGNED) @@ -98,7 +102,7 @@ extern "C" { * pointed to by \a routine is executed when qse_thr_start() is called. * */ -qse_thr_t* qse_thr_open ( +QSE_EXPORT qse_thr_t* qse_thr_open ( qse_mmgr_t* mmgr, qse_size_t xtnsize, qse_thr_routine_t routine @@ -108,29 +112,29 @@ qse_thr_t* qse_thr_open ( * The qse_thr_close() function destroys a thread object. Make sure that the * thread routine has been terminated properly. */ -void qse_thr_close ( +QSE_EXPORT void qse_thr_close ( qse_thr_t* thr ); -int qse_thr_init ( +QSE_EXPORT int qse_thr_init ( qse_thr_t* thr, qse_mmgr_t* mmgr, qse_thr_routine_t routine ); -void qse_thr_fini ( +QSE_EXPORT void qse_thr_fini ( qse_thr_t* thr ); -qse_mmgr_t* qse_thr_getmmgr ( +QSE_EXPORT qse_mmgr_t* qse_thr_getmmgr ( qse_thr_t* thr ); -void* qse_thr_getxtn ( +QSE_EXPORT void* qse_thr_getxtn ( qse_thr_t* thr ); -qse_size_t qse_thr_getstacksize ( +QSE_EXPORT qse_size_t qse_thr_getstacksize ( qse_thr_t* thr ); @@ -138,7 +142,7 @@ qse_size_t qse_thr_getstacksize ( * The qse_thr_setstacksize() function sets the stack size of a thread. * It must be called before a thread routine gets started. */ -void qse_thr_setstacksize ( +QSE_EXPORT void qse_thr_setstacksize ( qse_thr_t* thr, qse_size_t num ); @@ -154,7 +158,7 @@ void qse_thr_setstacksize ( * * \return 0 on success, -1 on failure */ -int qse_thr_start ( +QSE_EXPORT int qse_thr_start ( qse_thr_t* thr, int flags, /**< 0 or bitwise-or of QSE_THR_NEW_ROUTINE and QSE_THR_DETACHED */ ... @@ -164,50 +168,50 @@ int qse_thr_start ( * The qse_thr_stop() function aborts a thread. * \return 0 on success, -1 on failure */ -int qse_thr_stop (qse_thr_t* thr); +QSE_EXPORT int qse_thr_stop (qse_thr_t* thr); /** * The qse_thr_join() function waits for thread termination. * \return 0 on success, -1 on failure */ -int qse_thr_join (qse_thr_t* thr); +QSE_EXPORT int qse_thr_join (qse_thr_t* thr); /** * The qse_thr_detach() function detaches a thread. * \return 0 on success, -1 on failure */ -int qse_thr_detach (qse_thr_t* thr); +QSE_EXPORT int qse_thr_detach (qse_thr_t* thr); /** * The qse_thr_kill() function sends a signal to a thread. */ -int qse_thr_kill (qse_thr_t* thr, int sig); +QSE_EXPORT int qse_thr_kill (qse_thr_t* thr, int sig); /** * The qse_thr_blocksig() function causes a therad to block the signal \a sig. */ -int qse_thr_blocksig (qse_thr_t* thr, int sig); +QSE_EXPORT int qse_thr_blocksig (qse_thr_t* thr, int sig); /** * The qse_thr_unblocksig() function causes a therad to unblock the signal \a sig. */ -int qse_thr_unblocksig (qse_thr_t* thr, int sig); +QSE_EXPORT int qse_thr_unblocksig (qse_thr_t* thr, int sig); /** * The qse_thr_blockallsigs() function causes a therad to block all signals. */ -int qse_thr_blockallsigs (qse_thr_t* thr); +QSE_EXPORT int qse_thr_blockallsigs (qse_thr_t* thr); /** * The qse_thr_unblockallsigs() function causes a therad to unblock all signals. */ -int qse_thr_unblockallsigs (qse_thr_t* thr); +QSE_EXPORT int qse_thr_unblockallsigs (qse_thr_t* thr); /** * The qse_thr_gethnd() function returns the native thread handle. */ -qse_thr_hnd_t qse_thr_gethnd ( +QSE_EXPORT qse_thr_hnd_t qse_thr_gethnd ( qse_thr_t* thr ); @@ -216,14 +220,14 @@ qse_thr_hnd_t qse_thr_gethnd ( * that has been terminated. If no thread routine has been started and * terminated, 0 is returned. */ -int qse_thr_getretcode ( +QSE_EXPORT int qse_thr_getretcode ( qse_thr_t* thr ); /** * The qse_thr_state() function returns the current state. */ -qse_thr_state_t qse_thr_getstate ( +QSE_EXPORT qse_thr_state_t qse_thr_getstate ( qse_thr_t* thr ); @@ -231,7 +235,7 @@ qse_thr_state_t qse_thr_getstate ( * The qse_getcurthrhnd() function returns the native handle to the * calling thread. */ -qse_thr_hnd_t qse_getcurthrhnd (void); +QSE_EXPORT qse_thr_hnd_t qse_getcurthrhnd (void); #ifdef __cplusplus } diff --git a/qse/lib/sys/Makefile.am b/qse/lib/sys/Makefile.am index 5b09d7a3..1c486057 100644 --- a/qse/lib/sys/Makefile.am +++ b/qse/lib/sys/Makefile.am @@ -7,6 +7,7 @@ AM_CPPFLAGS = \ lib_LTLIBRARIES = libqsesys.la libqsesys_la_SOURCES = \ cnd.c \ + intr.c \ mtx.c \ rwl.c \ thr.c \ diff --git a/qse/lib/sys/Makefile.in b/qse/lib/sys/Makefile.in index 873ff013..fad1ac6a 100644 --- a/qse/lib/sys/Makefile.in +++ b/qse/lib/sys/Makefile.in @@ -127,7 +127,7 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libqsesys_la_DEPENDENCIES = -am_libqsesys_la_OBJECTS = cnd.lo mtx.lo rwl.lo thr.lo +am_libqsesys_la_OBJECTS = cnd.lo intr.lo mtx.lo rwl.lo thr.lo libqsesys_la_OBJECTS = $(am_libqsesys_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) @@ -408,6 +408,7 @@ AM_CPPFLAGS = \ lib_LTLIBRARIES = libqsesys.la $(am__append_1) libqsesys_la_SOURCES = \ cnd.c \ + intr.c \ mtx.c \ rwl.c \ thr.c \ @@ -504,6 +505,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SocketAddress.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cnd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/intr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mtx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rwl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thr.Plo@am__quote@ diff --git a/qse/lib/sys/cnd.c b/qse/lib/sys/cnd.c index 4808762f..f687d794 100644 --- a/qse/lib/sys/cnd.c +++ b/qse/lib/sys/cnd.c @@ -258,7 +258,7 @@ void qse_cnd_broadcast (qse_cnd_t* cnd) #endif } -void qse_cnd_wait (qse_cnd_t* cnd, qse_mtx_t* mutex, qse_ntime_t* waiting_time) +void qse_cnd_wait (qse_cnd_t* cnd, qse_mtx_t* mutex, const qse_ntime_t* waiting_time) { #if defined(_WIN32) unsigned int was_waiting, was_gone; diff --git a/qse/lib/sys/intr.c b/qse/lib/sys/intr.c new file mode 100644 index 00000000..9888b85a --- /dev/null +++ b/qse/lib/sys/intr.c @@ -0,0 +1,162 @@ +/* + * $Id$ + * + Copyright (c) 2006-2014 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#if defined(_WIN32) +# include + +#elif defined(__OS2__) +# define INCL_DOSPROCESS +# define INCL_DOSEXCEPTIONS +# define INCL_ERRORS +# include + +#elif defined(__DOS__) +# include +# include +#else +# include +# include +# include +#endif + +static qse_intr_handler_t intr_handler = QSE_NULL; +static void* intr_handler_arg = QSE_NULL; + +#if defined(_WIN32) +static BOOL WINAPI __intr_handler (DWORD ctrl_type) +{ + if (ctrl_type == CTRL_C_EVENT || + ctrl_type == CTRL_CLOSE_EVENT) + { + if (intr_handler) intr_handler (intr_handler_arg); + return TRUE; + } + + return FALSE; +} + +#elif defined(__OS2__) + +static EXCEPTIONREGISTRATIONRECORD os2_excrr = { 0 }; + +static ULONG _System __intr_handler ( + PEXCEPTIONREPORTRECORD p1, + PEXCEPTIONREGISTRATIONRECORD p2, + PCONTEXTRECORD p3, + PVOID pv) +{ + if (p1->ExceptionNum == XCPT_SIGNAL) + { + if (p1->ExceptionInfo[0] == XCPT_SIGNAL_INTR || + p1->ExceptionInfo[0] == XCPT_SIGNAL_KILLPROC || + p1->ExceptionInfo[0] == XCPT_SIGNAL_BREAK) + { + APIRET rc; + + if (intr_handler) intr_handler (intr_handler_arg); + + rc = DosAcknowledgeSignalException (p1->ExceptionInfo[0]); + return (rc != NO_ERROR)? 1: XCPT_CONTINUE_EXECUTION; + } + } + + return XCPT_CONTINUE_SEARCH; /* exception not resolved */ +} + +#elif defined(__DOS__) + +static void __intr_handler (void) +{ + if (intr_handler) intr_handler (intr_handler_arg); +} + +#else + +static void __intr_handler (int sig) +{ + if (intr_handler) intr_handler (intr_handler_arg); +} + +static int setsignal (int sig, void(*handler)(int), int restart) +{ + struct sigaction sa_int; + + sa_int.sa_handler = handler; + sigemptyset (&sa_int.sa_mask); + + sa_int.sa_flags = 0; + + if (restart) + { + #if defined(SA_RESTART) + sa_int.sa_flags |= SA_RESTART; + #endif + } + else + { + #if defined(SA_INTERRUPT) + sa_int.sa_flags |= SA_INTERRUPT; + #endif + } + return sigaction (sig, &sa_int, NULL); +} +#endif + +void qse_setintrhandler (qse_intr_handler_t handler, void* arg) +{ + intr_handler = handler; + intr_handler_arg = arg; + +#if defined(_WIN32) + SetConsoleCtrlHandler (__intr_handler, TRUE); +#elif defined(__OS2__) + os2_excrr.ExceptionHandler = (ERR)__intr_handler; + DosSetExceptionHandler (&os2_excrr); /* TODO: check if NO_ERROR is returned */ +#elif defined(__DOS__) + signal (SIGINT, __intr_handler); +#else + /*setsignal (SIGINT, __intr_handler, 1); TO BE MORE COMPATIBLE WITH WIN32*/ + setsignal (SIGINT, __intr_handler, 0); +#endif +} + +void qse_clearintrhandler (void) +{ + intr_handler = QSE_NULL; + intr_handler_arg = QSE_NULL; + +#if defined(_WIN32) + SetConsoleCtrlHandler (__intr_handler, FALSE); +#elif defined(__OS2__) + DosUnsetExceptionHandler (&os2_excrr); +#elif defined(__DOS__) + signal (SIGINT, SIG_DFL); +#else + setsignal (SIGINT, SIG_DFL, 1); +#endif +} diff --git a/qse/lib/sys/mtx.c b/qse/lib/sys/mtx.c index 77dc4d3a..dc2d892a 100644 --- a/qse/lib/sys/mtx.c +++ b/qse/lib/sys/mtx.c @@ -154,7 +154,7 @@ void* qse_mtx_getxtn (qse_mtx_t* mtx) return QSE_XTN (mtx); } -int qse_mtx_lock (qse_mtx_t* mtx, qse_ntime_t* waiting_time) +int qse_mtx_lock (qse_mtx_t* mtx, const qse_ntime_t* waiting_time) { #if defined(_WIN32) /* diff --git a/qse/lib/sys/rwl.c b/qse/lib/sys/rwl.c index 48dc75ad..c7aa70b2 100644 --- a/qse/lib/sys/rwl.c +++ b/qse/lib/sys/rwl.c @@ -100,7 +100,7 @@ void* qse_rwl_getxtn (qse_rwl_t* rwl) return QSE_XTN (rwl); } -int qse_rwl_lockr (qse_rwl_t* rwl, qse_ntime_t* waiting_time) +int qse_rwl_lockr (qse_rwl_t* rwl, const qse_ntime_t* waiting_time) { qse_ntime_t dead_line, now, rem, zero; @@ -164,7 +164,7 @@ int qse_rwl_unlockr (qse_rwl_t* rwl) return 0; } -int qse_rwl_lockw (qse_rwl_t* rwl, qse_ntime_t* waiting_time) +int qse_rwl_lockw (qse_rwl_t* rwl, const qse_ntime_t* waiting_time) { qse_ntime_t dead_line, now, rem, zero; diff --git a/qse/lib/sys/thr.c b/qse/lib/sys/thr.c index c892c64f..acbcee20 100644 --- a/qse/lib/sys/thr.c +++ b/qse/lib/sys/thr.c @@ -27,6 +27,7 @@ #include "thr.h" #include "../cmn/mem.h" +#include #include #if (!defined(__unix__) && !defined(__unix)) || defined(HAVE_PTHREAD) @@ -98,7 +99,9 @@ void qse_thr_setstacksize (qse_thr_t* thr, qse_size_t num) thr->__stacksize = num; } -#if defined(__BEOS__) +#if defined(__OS2__) +static void __thread_main (void* arg) +#elif defined(__BEOS__) static int32 __thread_main (void* arg) #else static void* __thread_main (void* arg) @@ -110,9 +113,11 @@ static void* __thread_main (void* arg) { #if defined(_WIN32) Sleep (0); +#elif defined(__OS2__) + DosSleep (0); #elif defined(HAVE_NANOSLEEP) struct timespec ts; - ts.tv_sec =0; + ts.tv_sec = 0; ts.tv_nsec = 0; nanosleep (&ts, &ts); #else @@ -120,7 +125,7 @@ static void* __thread_main (void* arg) #endif } -#if !defined(_WIN32) && !defined(__BEOS__) +#if defined(HAVE_PTHREAD) /* * the asynchronous cancel-type is used to better emulate * the bad effect of WIN32's TerminateThread using pthread_cancel @@ -135,13 +140,24 @@ static void* __thread_main (void* arg) #if defined(_WIN32) _endthreadex (thr->__return_code); return QSE_NULL; + +#elif defined(__OS2__) + _endthread (); + /* no return statement */ + +#elif defined(__DOS__) + /* not implemented */ + return QSE_NULL; + #elif defined(__BEOS__) exit_thread (thr->__return_code); return 0; + #else pthread_exit (&thr->__return_code); return QSE_NULL; #endif + } static int __create_thread (qse_thr_t* thr) @@ -153,6 +169,19 @@ static int __create_thread (qse_thr_t* thr) thr->__handle = (HANDLE)_beginthreadex (QSE_NULL, 0, (unsigned int (__stdcall*)(void*))__thread_main, thr, 0, &tid); if (thr->__handle == 0) return -1; + +#elif defined(__OS2__) + TID tid; + + /* default stack size to 81920(4096 * 20) */ + tid = _beginthread (__thread_main, NULL, (thr->__stacksize > 0? thr->__stacksize: 81920), thr); + if (tid == -1) return -1; + + thr->__handle = tid; + +#elif defined(__DOS__) + /* not implemented */ + #elif defined(__BEOS__) thread_id tid; @@ -161,6 +190,7 @@ static int __create_thread (qse_thr_t* thr) thr->__handle = tid; resume_thread(thr->__handle); + #elif defined(HAVE_PTHREAD) pthread_attr_t attr; pthread_attr_init (&attr); @@ -197,6 +227,10 @@ static int __cancel_thread (qse_thr_t* thr) if (thr->__state != QSE_THR_RUNNING) return -1; #if defined(_WIN32) if (TerminateThread (thr->__handle, 0) == 0) return -1; +#elif defined(__OS2__) + if (DosKillThread (thr->__handle) != NO_ERROR) return -1; +#elif defined(__DOS__) + /* not implemented */ #elif defined(__BEOS__) if (kill_thread (thr->__handle) < B_OK) return -1; #elif defined(HAVE_PTHREAD) @@ -251,11 +285,18 @@ int qse_thr_join (qse_thr_t* thr) #if defined(_WIN32) if (thr->__state == QSE_THR_RUNNING) { - if (WaitForSingleObject ( - thr->__handle, INFINITE) == WAIT_FAILED) return -1; + if (WaitForSingleObject (thr->__handle, INFINITE) == WAIT_FAILED) return -1; } + +#elif defined(__OS2__) + if (DosWaitThread (&thr->__handle, DCWW_WAIT) != NO_ERROR) return -1; + +#elif defined(__DOS__) + /* not implemented */ + #elif defined(__BEOS__) if (wait_for_thread(thr->__handle, QSE_NULL) < B_OK) return -1; + #elif defined(HAVE_PTHREAD) if (pthread_join(thr->__handle, QSE_NULL) != 0) return -1; #endif @@ -279,6 +320,8 @@ int qse_thr_detach (qse_thr_t* thr) int qse_thr_kill (qse_thr_t* thr, int sig) { + /* this function is to send a signal to a thread. + * don't get confused by the name */ if (thr->__state != QSE_THR_RUNNING) return -1; #if defined(HAVE_PTHREAD) @@ -341,7 +384,7 @@ int qse_thr_unblockallsigs (qse_thr_t* thr) #endif if (thr->__state != QSE_THR_RUNNING) return -1; - + #if defined(HAVE_PTHREAD) sigfillset (&mask); if (pthread_sigmask (SIG_UNBLOCK, &mask, QSE_NULL) != 0) return -1; @@ -369,7 +412,12 @@ qse_thr_hnd_t qse_getcurthrhnd (void) #if defined(_WIN32) return GetCurrentThread (); #elif defined(__OS2__) - return QSE_THR_HND_INVALID; /* TODO: implement this */ + PTIB ptib; + PPIB ppib; + + if (DosGetInfoBlocks (&ptib, &ppib) != NO_ERROR) return QSE_THR_HND_INVALID; + return ptib->tib_ptib2->tib2_ultid; + #elif defined(__DOS__) return QSE_THR_HND_INVALID; /* TODO: implement this */ #elif defined(__BEOS__) diff --git a/qse/lib/sys/thr.h b/qse/lib/sys/thr.h index c875dd23..a4e023bf 100644 --- a/qse/lib/sys/thr.h +++ b/qse/lib/sys/thr.h @@ -36,16 +36,22 @@ # include # include # define QSE_THR_HND_INVALID INVALID_HANDLE_VALUE + #elif defined(__OS2__) - /* not implemented */ +# define INCL_DOSPROCESS +# define INCL_DOSDATETIME +# define INCL_DOSERRORS +# include +# include +# define QSE_THR_HND_INVALID (-1) #elif defined(__DOS__) - /* not implemented */ #elif defined(__BEOS__) # include # define QSE_THR_HND_INVALID (-1) + #else # if defined(AIX) && defined(__GNUC__) typedef int crid_t; diff --git a/qse/samples/sys/rwl01.c b/qse/samples/sys/rwl01.c index 37a43d73..fb5fb993 100644 --- a/qse/samples/sys/rwl01.c +++ b/qse/samples/sys/rwl01.c @@ -2,9 +2,9 @@ #include #include #include +#include #include -#include #if defined(_WIN32) # include @@ -16,8 +16,9 @@ struct thr_xtn_t }; typedef struct thr_xtn_t thr_xtn_t; -qse_rwl_t* rwl; -qse_mtx_t* mtx; +static qse_rwl_t* rwl; +static qse_mtx_t* mtx; +static int stop_req = 0; #define OUTMSG(msg,id) do { \ qse_ntime_t now; \ @@ -27,23 +28,29 @@ qse_mtx_t* mtx; qse_mtx_unlock (mtx); \ } while(0) -int thr_exec (qse_thr_t* thr) +static int thr_exec (qse_thr_t* thr) { thr_xtn_t* xtn = qse_thr_getxtn(thr); OUTMSG (QSE_T("starting"), xtn->id); - while (1) + while (!stop_req) { if (xtn->id % 2) /*if (xtn->id > 0)*/ { OUTMSG (QSE_T("read waiting"), xtn->id); - qse_rwl_lockr (rwl, QSE_NULL); - OUTMSG (QSE_T("read start"), xtn->id); - /*sleep (1);*/ - OUTMSG (QSE_T("read done"), xtn->id); - qse_rwl_unlockr (rwl); + if (qse_rwl_lockr (rwl, QSE_NULL) >= 0) + { + OUTMSG (QSE_T("read start"), xtn->id); + /*sleep (1);*/ + OUTMSG (QSE_T("read done"), xtn->id); + qse_rwl_unlockr (rwl); + } + else + { + OUTMSG (QSE_T("read fail"), xtn->id); + } } else { @@ -73,7 +80,7 @@ int thr_exec (qse_thr_t* thr) } -void test_001 (void) +static void test_001 (void) { qse_mmgr_t* mmgr; qse_thr_t* t[6]; @@ -100,6 +107,11 @@ void test_001 (void) qse_mtx_close (mtx); } +static void stop_run (void* arg) +{ + stop_req = 1; +} + int main () { #if defined(_WIN32) @@ -113,8 +125,9 @@ int main () qse_openstdsios (); -setbuf (stdout, NULL); + qse_setintrhandler (stop_run, QSE_NULL); test_001 (); + qse_clearintrhandler (); qse_closestdsios ();