main.c 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // main.c
  2. //
  3. #ifdef _WIN32
  4. #define _CRT_SECURE_NO_WARNINGS
  5. #include <windows.h>
  6. #include "../Win32/w32def.h"
  7. #define sleep(sec) Sleep(sec * 1000)
  8. #endif // _WIN32
  9. #include <stdio.h>
  10. #include "src/defines.h"
  11. #include "src/gfaipc.h"
  12. #define _UNUSED(v) v = v
  13. typedef struct _TESTSTRUCT1
  14. {
  15. int nCounter1;
  16. int nCounter2;
  17. }TESTSTRUCT1, *LPTESTSTRUCT1;
  18. typedef const TESTSTRUCT1 *LPCTESTSTRUCT1;
  19. typedef struct _TESTSTRUCT2
  20. {
  21. int nCounter1;
  22. int nCounter2;
  23. }TESTSTRUCT2, *LPTESTSTRUCT2;
  24. typedef const TESTSTRUCT2 *LPCTESTSTRUCT2;
  25. #define _UUID_TESTSTRUCT1 "8c2e723a-5556-4d90-b5ed-bba8575b6f28"
  26. #define _UUID_TESTSTRUCT2 "8d961df7-96c4-45cd-8dd7-346227782ac0"
  27. int main(int argc, char *argv[])
  28. {
  29. HSHM hShm1, hShm2;
  30. LPTESTSTRUCT1 p1 = NULL;
  31. LPTESTSTRUCT2 p2 = NULL;
  32. _UNUSED(argc);
  33. _UNUSED(argv);
  34. GfaIpcDumpSHMROT();
  35. hShm1 = GfaIpcAcquireSHM(_UUID_TESTSTRUCT1, sizeof(TESTSTRUCT1), 1, "Teststruct 1");
  36. GfaIpcDumpSHMROT();
  37. hShm2 = GfaIpcAcquireSHM(_UUID_TESTSTRUCT1, sizeof(TESTSTRUCT1), 1, "Teststruct 1");
  38. // GfaIpcDumpSHMROT();
  39. if(hShm1 && hShm2)
  40. {
  41. p1 = (LPTESTSTRUCT1)GfaIpcAcquirePointer(hShm1);
  42. TRACE("Get pointer: %p\n", p1);
  43. p2 = (LPTESTSTRUCT2)GfaIpcAcquirePointer(hShm2);
  44. TRACE("Get pointer: %p\n", p2);
  45. TRACE("p1C1: %d, p1C2: %d\n", p1->nCounter1, p1->nCounter2);
  46. TRACE("p2C1: %d, p2C2: %d\n", p2->nCounter1, p2->nCounter2);
  47. GfaIpcLockSHM(hShm1);
  48. p1->nCounter1++;
  49. p1->nCounter2--;
  50. GfaIpcUnlockSHM(hShm1);
  51. TRACE("p1C1: %d, p1C2: %d\n", p1->nCounter1, p1->nCounter2);
  52. TRACE("p2C1: %d, p2C2: %d\n", p2->nCounter1, p2->nCounter2);
  53. GfaIpcLockSHM(hShm2);
  54. p2->nCounter1--;
  55. p2->nCounter2++;
  56. GfaIpcUnlockSHM(hShm2);
  57. TRACE("p1C1: %d, p1C2: %d\n", p1->nCounter1, p1->nCounter2);
  58. TRACE("p2C1: %d, p2C2: %d\n", p2->nCounter1, p2->nCounter2);
  59. GfaIpcReleasePointer(hShm1, p1);
  60. GfaIpcReleasePointer(hShm2, p2);
  61. GfaIpcReleaseSHM(hShm1);
  62. GfaIpcReleaseSHM(hShm2);
  63. }
  64. //uuid_t uuid;
  65. //_uuid_parse("8c2e723a-5556-4d90-b5ed-bba8575b6f28", &uuid);
  66. return 0;
  67. }