[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
[rtl] rtl1.1/2.0.36 freezing using shmem
Hallo,
I'm using shared memory described in
<http://www.isd.cme.nist.gov/projects/emc/shmem.html>
"Using Shared Memory in Real-Time Linux" from Frederick M. Proctor.
I expanded the structures for using data like this inside
common.h:
...
typedef struct
{
unsigned int inuse;
int arg1;
double arg2;
double LUT[4096]; /* my LoockUpTable for DAU */
} MY_DATA;
...
typedef struct
{
MY_COMMAND cmd;
MY_DATA data;
MY_STATUS status;
MY_ERROR error;
} MY_STRUCT;
...
inside rt_process.c I wrote:
static void task_code(int t)
{
...
for (;;)
{
...
my_struct.status.heartbeat++;
/* DAQ - Only for fun at moment */
my_struct.data.arg1=0;
my_struct.data.arg2=0.0;
/* write data to shmem */
if (0 == my_struct_ptr->data.inuse)
memcpy(&my_struct_ptr->data,
&my_struct.data,
sizeof(MY_DATA));
...
rt_task_wait();
}
}
with the result, my system is frozen for a long time
(mostly a hard reset was following..) while insmod rtmod
# time insmod rtmod.o && rmmod rtmod && echo DONE
real 0m0.010s
user 0m0.010s
sys 0m0.000s
DONE
This is was time says. What is wrong with this code?
or is there another/better/faster way? Without this
structure data all things are fine.
Olaf
--- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail majordomo@rtlinux.cs.nmt.edu OR
echo "unsubscribe rtl <Your_email>" | mail majordomo@rtlinux.cs.nmt.edu
----
For more information on Real-Time Linux see:
http://www.rtlinux.org/~rtlinux/