TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: All
from: Thomas Seeling
date: 1996-11-12 13:31:40
subject: emx+gcc access to 16-bit-semaphore

Hallo, All!


=== Cut ===
.PHONY: all default

CC=gcc
CFLAGS=-Wall -Zmt -pedantic -g -mprobe

AR=ar rcs
EMXOMFAR=emxomfar rc

SEMSRC=sem16.c
SEMOBJ=$(addsuffix .o,$(basename $(SEMSRC)))
SEMTGT=libsem16.a

.c.o:
 $(CC) $(CFLAGS) -c $<

all: default

default:
 $(CC) $(CFLAGS) $(PRODOPT) -c $(SEMSRC)
 -{at}rm -f $(SEMTGT)
 $(AR) $(SEMTGT) $(SEMOBJ)

$(SEMTGT): $(SEMOBJ)
 -{at}rm -f ${at}
 $(AR) ${at} $^

sem16.o:   sem16.c
 $(CC) -Wall -Zmt -g $(PRODOPT) -c $<
=== Cut ===
;
; doscalls.def (created by emximp)
;
LIBRARY DOSCALLS
EXPORTS
  DOSSEMSETWAIT                    {at}20
  DOSMUXSEMWAIT                    {at}22
  DOSCLOSESEM                      {at}23
  DOSCREATESEM                     {at}24
  DOSOPENSEM                       {at}25
  DOSSEMREQUEST                    {at}140
  DOSSEMCLEAR                      {at}141
  DOSSEMWAIT                       {at}142
  DOSSEMSET                        {at}143
  DOSFSRAMSEMREQUEST               {at}161
  DOSFSRAMSEMCLEAR                 {at}162
=== Cut ===
/* sem16.h for emx+gcc 0.9c (c) 1996 Thomas Seeling */
#ifndef _DOSCALLS_H
#define _DOSCALLS_H

#ifndef INCL_DOSSEMAPHORES
#define INCL_DOSSEMAPHORES
#endif

#include 
#include 

#define CSEM_PRIVATE    0
#define CSEM_PUBLIC     1

#endif

USHORT _THUNK_PASCAL_FUNCTION(Dos16CreateSem) (USHORT, PHSEM, PSZ);
USHORT _THUNK_PASCAL_FUNCTION(Dos16OpenSem)   (PHSEM, PSZ);
USHORT _THUNK_PASCAL_FUNCTION(Dos16SemRequest)(HSEM, LONG);
USHORT _THUNK_PASCAL_FUNCTION(Dos16SemWait)   (HSEM, LONG);
USHORT _THUNK_PASCAL_FUNCTION(Dos16SemClear)  (HSEM);
USHORT _THUNK_PASCAL_FUNCTION(Dos16SemSet)    (HSEM);
USHORT _THUNK_PASCAL_FUNCTION(Dos16CloseSem)  (HSEM);

USHORT DosSemWait   (HSEM, LONG);
USHORT DosSemClear  (HSEM);
USHORT DosSemSet    (HSEM);
USHORT DosSemRequest(HSEM, LONG);
USHORT DosCreateSem (USHORT, PHSEM, PSZ);
USHORT DosOpenSem   (PHSEM, PSZ);
USHORT DosCloseSem  (HSEM);
=== Cut ===
#include "sem16.h"

USHORT DosCreateSem(USHORT fExclusive, PHSEM phsem, PSZ pszSem) {
  return ((USHORT)
   (
    _THUNK_PASCAL_PROLOG(sizeof(USHORT)+
    sizeof(PHSEM)+
    sizeof(PSZ));
    _THUNK_PASCAL_SHORT(fExclusive);
    _THUNK_PASCAL_FLAT(phsem);
    _THUNK_PASCAL_FLAT(pszSem);
    _THUNK_PASCAL_CALL(Dos16CreateSem)));
}

USHORT DosOpenSem(PHSEM phsem, PSZ pszSem) {
  return ((USHORT)
   (
    _THUNK_PASCAL_PROLOG(sizeof(PHSEM)+
    sizeof(PSZ));
    _THUNK_PASCAL_FLAT(phsem);
    _THUNK_PASCAL_FLAT(pszSem);
    _THUNK_PASCAL_CALL(Dos16OpenSem)));
}

USHORT DosSemRequest(HSEM hsem, LONG lTimeout) {
  return ((USHORT)
   (
    _THUNK_PASCAL_PROLOG(sizeof(HSEM)+
    sizeof(LONG));
    _THUNK_PASCAL_LONG(*(LONG *)&hsem);
    _THUNK_PASCAL_LONG(lTimeout);
    _THUNK_PASCAL_CALL(Dos16SemRequest)));
}

USHORT DosSemWait(HSEM hsem, LONG lTimeout) {
  return ((USHORT)
   (
    _THUNK_PASCAL_PROLOG(sizeof(HSEM)+
    sizeof(LONG));
    _THUNK_PASCAL_LONG(*(LONG *)&hsem);
    _THUNK_PASCAL_LONG(lTimeout);
    _THUNK_PASCAL_CALL(Dos16SemWait)));
}

USHORT DosSemClear(HSEM hsem) {
  return ((USHORT)
   (
    _THUNK_PASCAL_PROLOG(sizeof(HSEM));
    _THUNK_PASCAL_LONG(*(LONG *)&hsem);
    _THUNK_PASCAL_CALL(Dos16SemClear)));
}

USHORT DosSemSet(HSEM hsem) {
  return ((USHORT)
   (
    _THUNK_PASCAL_PROLOG(sizeof(HSEM));
    _THUNK_PASCAL_LONG(*(LONG *)&hsem);
    _THUNK_PASCAL_CALL(Dos16SemSet)));
}

USHORT DosCloseSem(HSEM hsem) {
  return ((USHORT)
   (
    _THUNK_PASCAL_PROLOG(sizeof(HSEM));
    _THUNK_PASCAL_LONG(*(LONG *)&hsem);
    _THUNK_PASCAL_CALL(Dos16CloseSem)));
}
=== Cut ===


Tschau...Thomas

--- E3-32/1.11-32/2.51+
* Origin: Die TeX-Box +49-6034-930021 V.34 -930022 ISDN 24h (2:244/1130.42)
SEEN-BY: 50/99 270/101 620/243 625/160 711/401 409 410 413 430 808 809 934
SEEN-BY: 711/955 712/407 515 624 628 713/317 800/1
@PATH: 244/1130 24/999 888 396/1 270/101 712/515 711/808 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.