main.c 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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 <unistd.h>
  11. #include <sys/types.h>
  12. #include <sys/stat.h>
  13. #include <sys/ipc.h>
  14. #include <fcntl.h>
  15. #include "src/defines.h"
  16. #include "src/gfaipc.h"
  17. #define _UNUSED(v) v = v
  18. typedef struct _TESTSTRUCT1
  19. {
  20. int nCounter1;
  21. int nCounter2;
  22. }TESTSTRUCT1, *LPTESTSTRUCT1;
  23. typedef const TESTSTRUCT1 *LPCTESTSTRUCT1;
  24. typedef struct _TESTSTRUCT2
  25. {
  26. int nCounter1;
  27. int nCounter2;
  28. }TESTSTRUCT2, *LPTESTSTRUCT2;
  29. typedef const TESTSTRUCT2 *LPCTESTSTRUCT2;
  30. #define _UUID_TESTSTRUCT1 "8c2e723a-5556-4d90-b5ed-bba8575b6f28"
  31. #define _UUID_TESTSTRUCT2 "8d961df7-96c4-45cd-8dd7-346227782ac0"
  32. int main(int argc, char *argv[])
  33. {
  34. HSHM hShm1, hShm2;
  35. LPTESTSTRUCT1 p1 = NULL;
  36. LPTESTSTRUCT2 p2 = NULL;
  37. _UNUSED(argc);
  38. _UNUSED(argv);
  39. // GfaIpcDumpSHMROT();
  40. hShm1 = GfaIpcAcquireSHM(_UUID_TESTSTRUCT1, sizeof(TESTSTRUCT1), 1, "Teststruct 1");
  41. TRACE("Acquired SHM.\n");
  42. p1 = (LPTESTSTRUCT1)GfaIpcAcquirePointer(hShm1);
  43. TRACE("Acquired Pointer.\n");
  44. // GfaIpcDumpSHMROT();
  45. GfaIpcLockSHM(hShm1);
  46. GfaIpcLockSHM(hShm1);
  47. TRACE("Acquired Lock.\n");
  48. sleep(10);
  49. // hShm2 = GfaIpcAcquireSHM(_UUID_TESTSTRUCT1, sizeof(TESTSTRUCT1), 1, "Teststruct 1");
  50. // GfaIpcDumpSHMROT();
  51. #if 0
  52. if(hShm1 && hShm2)
  53. {
  54. p1 = (LPTESTSTRUCT1)GfaIpcAcquirePointer(hShm1);
  55. TRACE("Get pointer: %p\n", p1);
  56. p2 = (LPTESTSTRUCT2)GfaIpcAcquirePointer(hShm2);
  57. TRACE("Get pointer: %p\n", p2);
  58. TRACE("p1C1: %d, p1C2: %d\n", p1->nCounter1, p1->nCounter2);
  59. TRACE("p2C1: %d, p2C2: %d\n", p2->nCounter1, p2->nCounter2);
  60. GfaIpcLockSHM(hShm1);
  61. p1->nCounter1++;
  62. p1->nCounter2--;
  63. GfaIpcUnlockSHM(hShm1);
  64. TRACE("p1C1: %d, p1C2: %d\n", p1->nCounter1, p1->nCounter2);
  65. TRACE("p2C1: %d, p2C2: %d\n", p2->nCounter1, p2->nCounter2);
  66. GfaIpcLockSHM(hShm2);
  67. p2->nCounter1--;
  68. p2->nCounter2++;
  69. GfaIpcUnlockSHM(hShm2);
  70. TRACE("p1C1: %d, p1C2: %d\n", p1->nCounter1, p1->nCounter2);
  71. TRACE("p2C1: %d, p2C2: %d\n", p2->nCounter1, p2->nCounter2);
  72. GfaIpcReleasePointer(hShm1, p1);
  73. GfaIpcReleasePointer(hShm2, p2);
  74. GfaIpcReleaseSHM(hShm1);
  75. GfaIpcReleaseSHM(hShm2);
  76. }
  77. #endif
  78. //uuid_t uuid;
  79. //_uuid_parse("8c2e723a-5556-4d90-b5ed-bba8575b6f28", &uuid);
  80. TRACE("Exit.\n");
  81. return 0;
  82. }