|
From: <jmk...@us...> - 2003-08-24 09:38:27
|
Update of /cvsroot/emc/rtapi/examples/fifo
In directory sc8-pr-cvs1:/tmp/cvs-serv3121/examples/fifo
Modified Files:
fifotask.c fifousr.c
Log Message:
Added module ID, now rtapi_exit() should remove all items allocated by the module. Added a mutex to protect RTAPI internal data from simultaneous access. Basic testing complete, needs more detailed testing.
Index: fifotask.c
===================================================================
RCS file: /cvsroot/emc/rtapi/examples/fifo/fifotask.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** fifotask.c 20 Aug 2003 03:16:20 -0000 1.16
--- fifotask.c 24 Aug 2003 09:38:24 -0000 1.17
***************
*** 9,12 ****
--- 9,13 ----
#include "common.h" /* FIFO_KEY */
+ static int module; /* the module ID */
static int fifo_task; /* the task ID */
static int fifo; /* the fifo ID */
***************
*** 59,72 ****
long period;
! if (rtapi_init() != RTAPI_SUCCESS ) {
return -1;
}
- retval = -1;
/* allocate and initialize the fifo */
! fifo = rtapi_fifo_new(FIFO_KEY, FIFO_SIZE, 'W');
if (fifo < 0 ) {
rtapi_print("fifotask init: rtapi_fifo_new failed with %d\n", fifo);
! goto no_fifo;
}
--- 60,75 ----
long period;
! module = rtapi_init("FIFOTASK");
! if ( module < 0 ) {
! rtapi_print("fifotask init: rtapi_init failed with %d\n", module);
return -1;
}
/* allocate and initialize the fifo */
! fifo = rtapi_fifo_new(FIFO_KEY, module, FIFO_SIZE, 'W');
if (fifo < 0 ) {
rtapi_print("fifotask init: rtapi_fifo_new failed with %d\n", fifo);
! rtapi_exit(module);
! return -1;
}
***************
*** 82,86 ****
rtapi_print("fifotask init: rtapi_clock_set_period failed with %ld\n",
period);
! goto no_task;
}
}
--- 85,90 ----
rtapi_print("fifotask init: rtapi_clock_set_period failed with %ld\n",
period);
! rtapi_exit(module);
! return -1;
}
}
***************
*** 89,93 ****
/* timer period too long */
rtapi_print("fifotask init: clock period too long: %ld\n", period );
! goto no_task;
}
rtapi_print("fifotask init: desired clock %ld, actual %ld\n",
--- 93,98 ----
/* timer period too long */
rtapi_print("fifotask init: clock period too long: %ld\n", period );
! rtapi_exit(module);
! return -1;
}
rtapi_print("fifotask init: desired clock %ld, actual %ld\n",
***************
*** 98,106 ****
/* create the fifo task */
! fifo_task = rtapi_task_new(fifo_code, 0 /* arg */, fifo_prio,
FIFO_STACKSIZE, RTAPI_NO_FP );
if (fifo_task < 0) {
rtapi_print("fifotask init: rtapi_task_new failed with %d\n", fifo_task);
! goto no_task;
}
--- 103,112 ----
/* create the fifo task */
! fifo_task = rtapi_task_new(fifo_code, 0 /* arg */, fifo_prio, module,
FIFO_STACKSIZE, RTAPI_NO_FP );
if (fifo_task < 0) {
rtapi_print("fifotask init: rtapi_task_new failed with %d\n", fifo_task);
! rtapi_exit(module);
! return -1;
}
***************
*** 109,113 ****
if (retval != RTAPI_SUCCESS) {
rtapi_print("fifotask init: rtapi_task_start failed with %d\n", retval);
! goto no_start;
}
--- 115,120 ----
if (retval != RTAPI_SUCCESS) {
rtapi_print("fifotask init: rtapi_task_start failed with %d\n", retval);
! rtapi_exit(module);
! return -1;
}
***************
*** 115,126 ****
return 0;
-
- /* clean up after failures so that the rtapi can be removed cleanly */
- no_start:
- rtapi_task_delete(fifo_task);
- no_task:
- rtapi_fifo_delete(fifo, 'W');
- no_fifo:
- return retval;
}
--- 122,125 ----
***************
*** 139,144 ****
rtapi_print("fifotask exit: rtapi_task_delete failed with %d\n", retval);
}
! /* TESTING - Intentionally fail to delete fifo */
! retval = rtapi_fifo_delete(fifo, 'W');
if (retval != RTAPI_SUCCESS) {
rtapi_print("fifotask exit: rtapi_fifo_delete failed with %d\n", retval);
--- 138,143 ----
rtapi_print("fifotask exit: rtapi_task_delete failed with %d\n", retval);
}
!
! retval = rtapi_fifo_delete(fifo, module);
if (retval != RTAPI_SUCCESS) {
rtapi_print("fifotask exit: rtapi_fifo_delete failed with %d\n", retval);
***************
*** 147,150 ****
rtapi_print("fifotask exit: done\n");
! rtapi_exit();
}
--- 146,149 ----
rtapi_print("fifotask exit: done\n");
! rtapi_exit(module);
}
Index: fifousr.c
===================================================================
RCS file: /cvsroot/emc/rtapi/examples/fifo/fifousr.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** fifousr.c 20 Aug 2003 03:16:20 -0000 1.6
--- fifousr.c 24 Aug 2003 09:38:24 -0000 1.7
***************
*** 11,14 ****
--- 11,15 ----
#include "common.h" /* FIFO_KEY, FIFO_SIZE */
+ static int module;
static jmp_buf env;
static void quit(int sig)
***************
*** 24,37 ****
int retval;
! retval = ulapi_init();
! if (retval != ULAPI_SUCCESS) {
! printf("fifousr main: ulapi_init returned %d\n", retval);
return -1;
}
/* open the fifo */
! fifo = ulapi_fifo_new(FIFO_KEY, FIFO_SIZE, 'R');
if (fifo < 0) {
printf("fifousr main: ulapi_fifo_new returned %d\n", fifo);
return -1;
}
--- 25,39 ----
int retval;
! module = ulapi_init("FIFO_USR");
! if (module < 0) {
! printf("fifousr main: ulapi_init returned %d\n", module);
return -1;
}
/* open the fifo */
! fifo = ulapi_fifo_new(FIFO_KEY, module, FIFO_SIZE, 'R');
if (fifo < 0) {
printf("fifousr main: ulapi_fifo_new returned %d\n", fifo);
+ ulapi_exit(module);
return -1;
}
***************
*** 57,66 ****
printf("shutting down\n");
! retval = ulapi_fifo_delete(fifo, 'R');
if (retval != ULAPI_SUCCESS) {
printf("fifousr main: ulapi_fifo_delete returned %d\n", retval);
return -1;
}
! return ulapi_exit();
}
--- 59,69 ----
printf("shutting down\n");
! retval = ulapi_fifo_delete(fifo, module);
if (retval != ULAPI_SUCCESS) {
printf("fifousr main: ulapi_fifo_delete returned %d\n", retval);
+ ulapi_exit(module);
return -1;
}
! return ulapi_exit(module);
}
|