Re: Is it safe to use these Linux function (test_bit(), set_bit(), clear_bit()) in character device driver for 2.6.10 ppc kernel.
From: Scott Wood <hidden>
Date: 2007-09-28 16:10:01
From: Scott Wood <hidden>
Date: 2007-09-28 16:10:01
Misbah khan wrote:
Scott Wood-2 wrote:quoted
They're used all over the place. Is there anything about them that you find suspect? -Scott I have devloped a character driver for FPGA which is memory mapped and using these API's to test a bit , set a bit or to clear a bit in the memory for eg :-
Please don't use quote markers on newly added text.
quoted
/* poll till data is transfered from sdram to dpram */ while((test_bit(DFR_BUSY,(UINT32 *)(\ (void *)mmap_reg_ptr + DATA_STATUS_REG))==1)\ && (delay < MAX_DELAY_BUSY))
You should use in_be32() rather than direct dereferencing.
quoted
{ KDEBUG3(" In the Dfr delay loop \n"); mdelay(DELAY); delay+=DELAY; }/* End of while(test_bit(FPGA_BUSY,(void *)register name) */ if(delay==MAX_DELAY_BUSY) { KDEBUG1("Out of the the Dfr busy loop \n"); return -1; } People working for FPGA are sure that they are not making the bit high where in my driver is returning -1 from the kernel space aborting it after running for few minutes or so .
I don't suppose the "few minutes" corresponds to MAX_DELAY_BUSY? -Scott