system.c 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. /*****************************************************************************/
  2. /* ここから */
  3. /*****************************************************************************/
  4. #include <stdlib.h>
  5. #include "sys/system.h"
  6. #include "Wonx.h"
  7. /*****************************************************************************/
  8. /* 互換関数の定義 */
  9. /*****************************************************************************/
  10. /*
  11. * Xサーバとの同期の整合性がとれなくなるなどの問題が考えられるので,
  12. * 互換関数の内部は UNIXTimer_Pause(), UNIXTimer_Unpause() でくくり,
  13. * タイマ割り込みを一時停止して処理を行う.また,unpause するまえに,
  14. * かならず sync するようにする.
  15. */
  16. /*
  17. * タイマの一時停止の2重解除の問題が出てくるので,
  18. * 互換関数から互換関数を呼んではいけない.
  19. * (一時停止はネストされるが,いちおう)
  20. * 似たような処理をする関数の場合は,必ず static な別関数に処理をまとめ,
  21. * そっちを呼び出すようにすること.
  22. * 引数の表示の問題もあるしね.
  23. */
  24. void sys_interrupt_set_hook(int type, intvector_t * intvector,
  25. intvector_t * last_intvector)
  26. {
  27. WWInterrupt ww_interrupt;
  28. if (!Wonx_IsCreated()) Wonx_Create();
  29. /* タイマを一時停止する */
  30. UNIXTimer_Pause(WonxSystem_GetUNIXTimer(Wonx_GetWonxSystem()));
  31. printf("call : sys_interrupt_set_hook() : type = %d, intvector = %p, last_intvector = %p\n", type, intvector, last_intvector);
  32. fflush(stdout);
  33. ww_interrupt = WonxSystem_GetWWInterrupt(Wonx_GetWonxSystem());
  34. last_intvector->callback = WWInterrupt_GetCallback(ww_interrupt, type);
  35. last_intvector->cs = WWInterrupt_GetCS(ww_interrupt, type);
  36. last_intvector->ds = WWInterrupt_GetDS(ww_interrupt, type);
  37. WWInterrupt_SetCallback(ww_interrupt, type, intvector->callback);
  38. WWInterrupt_SetCS(ww_interrupt, type, intvector->cs);
  39. WWInterrupt_SetDS(ww_interrupt, type, intvector->ds);
  40. printf("call : sys_interrupt_set_hook() : return value = none\n");
  41. fflush(stdout);
  42. /* タイマをもとに戻す */
  43. UNIXTimer_Unpause(WonxSystem_GetUNIXTimer(Wonx_GetWonxSystem()));
  44. return;
  45. }
  46. void sys_interrupt_reset_hook(int type, intvector_t * last_intvector)
  47. {
  48. WWInterrupt ww_interrupt;
  49. if (!Wonx_IsCreated()) Wonx_Create();
  50. /* タイマを一時停止する */
  51. UNIXTimer_Pause(WonxSystem_GetUNIXTimer(Wonx_GetWonxSystem()));
  52. printf("call : sys_interrupt_reset_hook() : type = %d, last_intvector = %p\n", type, last_intvector);
  53. fflush(stdout);
  54. ww_interrupt = WonxSystem_GetWWInterrupt(Wonx_GetWonxSystem());
  55. WWInterrupt_SetCallback(ww_interrupt, type, last_intvector->callback);
  56. WWInterrupt_SetCS(ww_interrupt, type, last_intvector->cs);
  57. WWInterrupt_SetDS(ww_interrupt, type, last_intvector->ds);
  58. printf("call : sys_interrupt_reset_hook() : return value = none\n");
  59. fflush(stdout);
  60. /* タイマをもとに戻す */
  61. UNIXTimer_Unpause(WonxSystem_GetUNIXTimer(Wonx_GetWonxSystem()));
  62. return;
  63. }
  64. void sys_wait(unsigned int time)
  65. {
  66. }
  67. unsigned long int sys_get_tick_count(void)
  68. {
  69. return (0);
  70. }
  71. void sys_sleep(void)
  72. {
  73. }
  74. void sys_set_sleep_time(int sleep_time)
  75. {
  76. }
  77. int sys_get_sleep_time(void)
  78. {
  79. return (0);
  80. }
  81. void sys_set_awake_key(int awake_key_pattern)
  82. {
  83. }
  84. int sys_get_awake_key(void)
  85. {
  86. return (0);
  87. }
  88. void sys_set_keepalive_int(int keepalive_pattern)
  89. {
  90. }
  91. void sys_get_ownerinfo(int size, char *buffer)
  92. {
  93. }
  94. int sys_suspend(int core)
  95. {
  96. return (0);
  97. }
  98. void sys_resume(int core)
  99. {
  100. }
  101. void sys_set_remote(int remote_enable)
  102. {
  103. }
  104. unsigned int sys_get_remote(void)
  105. {
  106. return (0);
  107. }
  108. void * sys_alloc_iram(void *pointer, unsigned size)
  109. {
  110. return (NULL);
  111. }
  112. void sys_free_iram(void * p)
  113. {}
  114. void * sys_get_my_iram(void)
  115. {
  116. return (NULL);
  117. }
  118. unsigned int sys_get_version(void)
  119. {
  120. return (0);
  121. }
  122. int sys_swap(int core)
  123. {
  124. return (0);
  125. }
  126. void sys_set_resume(unsigned int flags)
  127. {
  128. }
  129. unsigned int sys_get_resume(void)
  130. {
  131. return (0);
  132. }
  133. /*****************************************************************************/
  134. /* ここまで */
  135. /*****************************************************************************/
  136. /*****************************************************************************/
  137. /* End of File. */
  138. /*****************************************************************************/