|
From: <jmk...@us...> - 2003-08-24 09:38:27
|
Update of /cvsroot/emc/rtapi/examples/shmem
In directory sc8-pr-cvs1:/tmp/cvs-serv3121/examples/shmem
Modified Files:
shmemtask.c shmemusr.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: shmemtask.c
===================================================================
RCS file: /cvsroot/emc/rtapi/examples/shmem/shmemtask.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** shmemtask.c 20 Aug 2003 03:16:20 -0000 1.10
--- shmemtask.c 24 Aug 2003 09:38:24 -0000 1.11
***************
*** 9,12 ****
--- 9,13 ----
#include "common.h" /* shmem structure, SHMEM_KEY */
+ static int module;
static int shmem_task; /* the task ID*/
static int shmem_mem; /* the shared memory ID */
***************
*** 38,49 ****
long period;
! if (rtapi_init() != RTAPI_SUCCESS ) {
return -1;
}
-
/* allocate and initialize the shared memory structure */
! shmem_mem = rtapi_shmem_new( key, sizeof(SHMEM_STRUCT) );
if ( shmem_mem < 0 ) {
rtapi_print( "shmemtask init: rtapi_shmem_new returned %d\n", shmem_mem );
return -1;
}
--- 39,52 ----
long period;
! module = rtapi_init("SHMEMTASK");
! if ( module < 0 ) {
! rtapi_print( "shmemtask init: rtapi_init returned %d\n", module );
return -1;
}
/* allocate and initialize the shared memory structure */
! shmem_mem = rtapi_shmem_new( key, module, sizeof(SHMEM_STRUCT) );
if ( shmem_mem < 0 ) {
rtapi_print( "shmemtask init: rtapi_shmem_new returned %d\n", shmem_mem );
+ rtapi_exit(module);
return -1;
}
***************
*** 51,54 ****
--- 54,58 ----
if ( retval != RTAPI_SUCCESS ) {
rtapi_print( "shmemtask init: rtapi_shmem_getptr returned %d\n", retval );
+ rtapi_exit(module);
return -1;
}
***************
*** 65,68 ****
--- 69,73 ----
rtapi_print("shmemtask init: rtapi_clock_set_period failed with %ld\n",
period);
+ rtapi_exit(module);
return -1;
}
***************
*** 72,75 ****
--- 77,81 ----
/* timer period too long */
rtapi_print("shmemtask init: clock period too long: %ld\n", period );
+ rtapi_exit(module);
return -1;
}
***************
*** 81,88 ****
/* create the shmem task */
! shmem_task = rtapi_task_new(shmem_code, 0 /* arg */, shmem_prio,
SHMEM_STACKSIZE, RTAPI_NO_FP );
if ( shmem_task < 0 ) {
rtapi_print( "shmemtask init: rtapi_task_new returned %d\n", shmem_task );
return -1;
}
--- 87,95 ----
/* create the shmem task */
! shmem_task = rtapi_task_new(shmem_code, 0 /* arg */, shmem_prio, module,
SHMEM_STACKSIZE, RTAPI_NO_FP );
if ( shmem_task < 0 ) {
rtapi_print( "shmemtask init: rtapi_task_new returned %d\n", shmem_task );
+ rtapi_exit(module);
return -1;
}
***************
*** 92,95 ****
--- 99,103 ----
if ( retval != RTAPI_SUCCESS ) {
rtapi_print("shmemtask init: rtapi_task_start returned %d\n", retval );
+ rtapi_exit(module);
return -1;
}
***************
*** 112,129 ****
if ( retval != RTAPI_SUCCESS ) {
rtapi_print("shmemtask exit: rtapi_task_stop returned %d\n", retval );
- return;
}
retval = rtapi_task_delete( shmem_task );
if ( retval != RTAPI_SUCCESS ) {
rtapi_print("shmemtask exit: rtapi_task_delete returned %d\n", retval );
- return;
}
! /* TESTING - intentionally skip the shmem_delete */
! retval = rtapi_shmem_delete( shmem_mem );
if ( retval != RTAPI_SUCCESS ) {
rtapi_print("shmemtask exit: rtapi_shmem_delete returned %d\n", retval );
- return;
}
/* Clean up and exit */
! rtapi_exit();
}
--- 120,133 ----
if ( retval != RTAPI_SUCCESS ) {
rtapi_print("shmemtask exit: rtapi_task_stop returned %d\n", retval );
}
retval = rtapi_task_delete( shmem_task );
if ( retval != RTAPI_SUCCESS ) {
rtapi_print("shmemtask exit: rtapi_task_delete returned %d\n", retval );
}
! retval = rtapi_shmem_delete( shmem_mem, module );
if ( retval != RTAPI_SUCCESS ) {
rtapi_print("shmemtask exit: rtapi_shmem_delete returned %d\n", retval );
}
/* Clean up and exit */
! rtapi_exit(module);
}
Index: shmemusr.c
===================================================================
RCS file: /cvsroot/emc/rtapi/examples/shmem/shmemusr.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** shmemusr.c 20 Aug 2003 03:16:20 -0000 1.3
--- shmemusr.c 24 Aug 2003 09:38:24 -0000 1.4
***************
*** 5,8 ****
--- 5,9 ----
#include "common.h" /* shmem structure */
+ static int module;
static int key = SHMEM_KEY;
static int shmem_id;
***************
*** 19,32 ****
int retval;
! retval = ulapi_init();
! if ( retval != ULAPI_SUCCESS ) {
! printf("shmemusr main: ulapi_init returned %d\n", retval );
return -1;
}
/* allocate the shared memory structure */
! shmem_id = ulapi_shmem_new( key, sizeof(SHMEM_STRUCT) );
if (shmem_id < 0) {
printf( "shmemusr main: ulapi_shmem_new returned %d\n", shmem_id );
return -1;
}
--- 20,35 ----
int retval;
! module = ulapi_init("SHMEM_USR");
! if (module < 1) {
! printf("shmemusr main: ulapi_init returned %d\n", module);
return -1;
}
+
/* allocate the shared memory structure */
! shmem_id = ulapi_shmem_new( key, module, sizeof(SHMEM_STRUCT) );
if (shmem_id < 0) {
printf( "shmemusr main: ulapi_shmem_new returned %d\n", shmem_id );
+ ulapi_exit(module);
return -1;
}
***************
*** 34,37 ****
--- 37,41 ----
if (retval != ULAPI_SUCCESS) {
printf( "shmemusr main: ulapi_shmem_getptr returned %d\n", retval );
+ ulapi_exit(module);
return -1;
}
***************
*** 40,52 ****
while (!done) {
printf("%lu\n", shmem_struct->heartbeat);
sleep(1);
}
! retval = ulapi_shmem_delete( shmem_id );
if (retval != ULAPI_SUCCESS) {
printf("shmemusr main: ulapi_free_shmem returned %d\n", retval );
return -1;
}
! return ulapi_exit();
}
--- 44,58 ----
while (!done) {
printf("%lu\n", shmem_struct->heartbeat);
+ ulapi_printall();
sleep(1);
}
! retval = ulapi_shmem_delete( shmem_id, module );
if (retval != ULAPI_SUCCESS) {
printf("shmemusr main: ulapi_free_shmem returned %d\n", retval );
+ ulapi_exit(module);
return -1;
}
! return ulapi_exit(module);
}
|