123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- // main.c
- //
- #ifdef _WIN32
- #define _CRT_SECURE_NO_WARNINGS
- #include <windows.h>
- #include "../Win32/w32def.h"
- #define sleep(sec) Sleep(sec * 1000)
- #endif // _WIN32
- #include <stdio.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <sys/ipc.h>
- #include <fcntl.h>
- #include "src/defines.h"
- #include "src/gfaipc.h"
- #define _UNUSED(v) v = v
- typedef struct _TESTSTRUCT1
- {
- int nCounter1;
- int nCounter2;
- }TESTSTRUCT1, *LPTESTSTRUCT1;
- typedef const TESTSTRUCT1 *LPCTESTSTRUCT1;
- typedef struct _TESTSTRUCT2
- {
- int nCounter1;
- int nCounter2;
- }TESTSTRUCT2, *LPTESTSTRUCT2;
- typedef const TESTSTRUCT2 *LPCTESTSTRUCT2;
- #define _UUID_TESTSTRUCT1 "8c2e723a-5556-4d90-b5ed-bba8575b6f28"
- #define _UUID_TESTSTRUCT2 "8d961df7-96c4-45cd-8dd7-346227782ac0"
- int main(int argc, char *argv[])
- {
- HSHM hShm1, hShm2;
- LPTESTSTRUCT1 p1 = NULL;
- LPTESTSTRUCT2 p2 = NULL;
- _UNUSED(argc);
- _UNUSED(argv);
- // GfaIpcDumpSHMROT();
- hShm1 = GfaIpcAcquireSHM(_UUID_TESTSTRUCT1, sizeof(TESTSTRUCT1), 1, "Teststruct 1");
- TRACE("Acquired SHM.\n");
- p1 = (LPTESTSTRUCT1)GfaIpcAcquirePointer(hShm1);
- TRACE("Acquired Pointer.\n");
- // GfaIpcDumpSHMROT();
- GfaIpcLockSHM(hShm1);
- GfaIpcLockSHM(hShm1);
- TRACE("Acquired Lock.\n");
- sleep(10);
- // hShm2 = GfaIpcAcquireSHM(_UUID_TESTSTRUCT1, sizeof(TESTSTRUCT1), 1, "Teststruct 1");
- // GfaIpcDumpSHMROT();
- #if 0
- if(hShm1 && hShm2)
- {
- p1 = (LPTESTSTRUCT1)GfaIpcAcquirePointer(hShm1);
- TRACE("Get pointer: %p\n", p1);
- p2 = (LPTESTSTRUCT2)GfaIpcAcquirePointer(hShm2);
- TRACE("Get pointer: %p\n", p2);
- TRACE("p1C1: %d, p1C2: %d\n", p1->nCounter1, p1->nCounter2);
- TRACE("p2C1: %d, p2C2: %d\n", p2->nCounter1, p2->nCounter2);
- GfaIpcLockSHM(hShm1);
- p1->nCounter1++;
- p1->nCounter2--;
- GfaIpcUnlockSHM(hShm1);
- TRACE("p1C1: %d, p1C2: %d\n", p1->nCounter1, p1->nCounter2);
- TRACE("p2C1: %d, p2C2: %d\n", p2->nCounter1, p2->nCounter2);
- GfaIpcLockSHM(hShm2);
- p2->nCounter1--;
- p2->nCounter2++;
- GfaIpcUnlockSHM(hShm2);
- TRACE("p1C1: %d, p1C2: %d\n", p1->nCounter1, p1->nCounter2);
- TRACE("p2C1: %d, p2C2: %d\n", p2->nCounter1, p2->nCounter2);
- GfaIpcReleasePointer(hShm1, p1);
- GfaIpcReleasePointer(hShm2, p2);
- GfaIpcReleaseSHM(hShm1);
- GfaIpcReleaseSHM(hShm2);
- }
- #endif
- //uuid_t uuid;
- //_uuid_parse("8c2e723a-5556-4d90-b5ed-bba8575b6f28", &uuid);
- TRACE("Exit.\n");
- return 0;
- }
|