Hi Realtimers,

I'm sorry for bother you, but using nanosleep in rtlinux_3.0 causes some
strange behavior. The added code is supposed to toggle bit 0 off a
digital-io-card. The idea was to create a thread with a free running
while loop in wich an other thread is created and joined periodically.
After compiling and running the module it will work a view seconds and
then the system will crash. I noticed, that in the case of sleep-times
below 1000000 on the scope the the measured sleeptime of the calling
thread is about 5ms !?.

I'm not used in working with threads and
maybe i made a silly mistake using them. If somebody can see the error
please help me!

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/version.h>
#include <linux/errno.h>
#include <rtl_sched.h>
#include <rtl_fifo.h>
#include <linux/cons.h>

// headers for using multi-io-card, generating the signal
#include "win_ddk_types.h"
#include "pdfw_def.h"
#include "powerdaq-internal.h"
#include "powerdaq.h"
#include "pdfw_if.h"

#define UPTIME          100000
#define DOWNTIME        100000

pthread_t main_thr, trigger_thr;
unsigned int dout=0;
int board_handle=1;

void *trigger(void *dummy)
{       
        pd_dout_write_outputs(board_handle, dout|=(1<<0));
        nanosleep(hrt2ts(UPTIME), NULL);
        pd_dout_write_outputs(board_handle, dout&=~(1<<0)); 
        return NULL;
}

void *mainthread(void *dummy)
{
        while(1)
        {
                pthread_create(&trigger_thr, NULL, trigger, NULL);
                pthread_join(trigger_thr, NULL);
                //pthread_delete_np(trigger_thr);
                nanosleep(hrt2ts(DOWNTIME), NULL);              
        }

    return NULL;
}

int init_module(void)                   
{       
        pthread_create(&main_thr, NULL, mainthread, NULL);
        return 0;
}

void cleanup_module(void)
{
        pthread_delete_np(main_thr);
}

-- 

Thomas Sauter                               Tel. 06221/75933-15   
20/10 Perfect Vision                        [EMAIL PROTECTED]    
Waldhofer Str. 100
D-69123 Heidelberg

----- End of forwarded message from [EMAIL PROTECTED] -----
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
--
For more information on Real-Time Linux see:
http://www.rtlinux.org/

Reply via email to