| TIP: Click on subject to list as thread! | ANSI |
| echo: | |
|---|---|
| to: | |
| from: | |
| date: | |
| subject: | Semaphores (16 & 32) |
Darin McBride wrote in a message to Mike Bilow:
DM> Thanks, Mike. I'll let ya know how using _far16 turns out...
DM> and if it doesn't, perhaps you have a snippet of code as an
DM> example? :-)
Not for the semaphore API, I'm afraid. The only program I have which uses
the 16-bit semaphore API is Mutex, and that is entirely a 16-bit program.
You must do the manual conversions in translating the prototypes found in
the \WATCOM\H\OS21X directory, which contains the 16-bit OS/2 headers:
1. Change function calling conventions from "far pascal" to
"_far16 _pascal".
2. Change all "far*" pointer arguments to "_far16*".
For example, start with:
USHORT APIENTRY DosCreateSem(
USHORT fExclusive,
PHSYSSEM phsem,
PSZ pszSemName);
First, expand all the macros:
unsigned short far pascal DosCreateSem(
unsigned short fExclusive,
void far* far* phsem,
unsigned char far* pszSemName);
Applying the conversions:
unsigned short _far16 _pascal DosCreateSem(
unsigned short fExclusive,
void _far16* _far16* phsem,
unsigned char _far16* pszSemName);
Note that the compiler will translate "int" arguments to the
appropriate size in a function declared "_far16". See the
"Extended Keywords" section of the "User's Guide" for
complete information.
You can simplify your work by using predefined macros in the 32-bit
OS2DEF.H, such as APIENTRY16 ("_far16 _pascal") and APIRET16
("unsigned short").
-- Mike
---
* Origin: N1BEE BBS +1 401 944 8498 V.34/V.FC/V.32bis/HST16.8 (1:323/107)SEEN-BY: 50/99 270/101 620/243 711/401 409 410 413 430 808 809 934 955 SEEN-BY: 712/407 515 517 628 713/888 800/1 @PATH: 323/107 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™.