My application on the beaglebone black are multithread and for the reception there is a thread. And I don't have any problem receiving data on this thread. Don't forget to use mutex and semaphore.
Le mer. 27 juil. 2016 12:11, William Hermans <yyrk...@gmail.com> a écrit : > If I recall correctly, typically anything that is related to interrupts, > and blocking file reads( things of this nature - where you're waiting ) are > not thread safe as these types of calls can be preempted by another thread. > So, what I'd do to test if my assumption is correct. Is to write a test > app without threading. Or perhaps write a callback, but again, callbacks > are definitely not thread safe. > > I'm not seeing all the posts in this discussion for some reason. But is > there a specific reason why you need threads ? Because if you need this > sort of process segregation, it may be best to run entirely different > processes( multiple executables ), and then use some form of IPC mechanism > such as shared memory. Which POSIX shared memory really is fairly simple > once you become familiar with it. I had to do this with an application I > wrote several months back ,myself. Since a library I was using used > callbacks extensively and was not playing nicely on the stack ( preempting > my own code routinely ). > > On Wed, Jul 27, 2016 at 2:49 AM, Regina Choi <rejina.cho...@gmail.com> > wrote: > >> >> I'm not aware of library functions that are not thread safe, can you give >> some example library function that is not thread safe? So if the library >> function is not thread safe, what would be the effect if we accidentally >> use it in our program? >> >> Does that means we cannot use the library function completely in pthread >> if it is not thread safe and resort to polling mechanism? >> >> >> >> On Wednesday, July 27, 2016 at 1:00:10 PM UTC+8, William Hermans wrote: >>> >>> Are you sure everything you're using code wise is thread safe ? There >>> are a lot of library functions that are not thread safe. >>> >>> On Mon, Jul 25, 2016 at 8:31 PM, Regina Choi <rejina...@gmail.com> >>> wrote: >>> >>>> Thanks for reply. >>>> >>>> I'm not sure why, but I don't get timeout error messages from the read >>>> thread (though I have set it to 1 sec) !? It just freeze there waiting for >>>> UART input, even though there are UART input coming in. >>>> >>>> Yes, I got the Byte sent message printf from TX thread. Please see the >>>> attachement. >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> On Tue, Jul 26, 2016 at 2:30 AM, Wally Bkg <wb666...@gmail.com> wrote: >>>> >>>>> I'm stumped. Are you now getting timeout error messages from the read >>>>> thread? >>>>> >>>>> Are you getting the Byte sent: message printf from the TX thread? >>>>> >>>>> >>>>> On Sunday, July 24, 2016 at 10:11:57 PM UTC-5, Regina Choi wrote: >>>>>> >>>>>> >>>>>> Apology for late reply. >>>>>> >>>>>> I've tried with options.c_cc[VMIN] = 0; it's still the same issue. >>>>>> >>>>>> From the datasheet of AM335x, uart rx/tx buffers are 64 bytes. >>>>>> >>>>>> I've also tried putting tx command in tx thread that activated later >>>>>> than rx thread. Nothing changed as well. >>>>>> >>>>>> void* uartTxWait(void *param){ >>>>>> >>>>>> int count; >>>>>> usleep(1000000); >>>>>> unsigned char cmd[] = {0x10, 0x00, 0x32}; //"Tx From >>>>>> Beaglebone "; >>>>>> >>>>>> if ((count = write(file, (char*)cmd, 3))<0){ >>>>>> perror("Failed to write to the output\n"); >>>>>> //tcsetattr(file, TCSAFLUSH, &oriopt); //before >>>>>> exit, undo raw setting >>>>>> //return -1; >>>>>> }else{ >>>>>> printf("Byte sent: %d \n", count); >>>>>> } >>>>>> >>>>>> >>>>>> pthread_exit(0); >>>>>> } >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Friday, July 22, 2016 at 10:50:52 PM UTC+8, Wally Bkg wrote: >>>>>>> >>>>>>> I noticed you have options.c_cc[VMIN] = 2; If for some reason only >>>>>>> one character comes in, it'll block forever. Try using >>>>>>> options.c_cc[VMIN] >>>>>>> = 0; so that each char can timeout if its not received. >>>>>>> >>>>>>> How big are the Beaglebone uart buffers? >>>>>>> >>>>>>> You may still have a race between your write of the data and >>>>>>> starting your RX thread. Try putting the write into your TX thread and >>>>>>> launch it after you've launched the RX thread. >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Thursday, July 21, 2016 at 10:10:11 PM UTC-5, Regina Choi wrote: >>>>>>>> >>>>>>>> >>>>>>>> Hi Wally, >>>>>>>> >>>>>>>> I have tried adding fflush(stdout and fflush(stderr) in the while >>>>>>>> loop, however, in the UartRxWait thread, the read( ) function is in >>>>>>>> block >>>>>>>> waiting for incoming data. Which doesn't output anything. In the case, >>>>>>>> after start and shut down minicom, the UartRxWait thread running as >>>>>>>> usual, >>>>>>>> there is no output from the fflush(stdout) and fflush(stderr) either. >>>>>>>> >>>>>>>> yes, at the moment I have to kill the program to terminate. I have >>>>>>>> modified the code such that it loop for only 5 times and terminate the >>>>>>>> thread. >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>> For more options, visit http://beagleboard.org/discuss >>>>> --- >>>>> You received this message because you are subscribed to a topic in the >>>>> Google Groups "BeagleBoard" group. >>>>> To unsubscribe from this topic, visit >>>>> https://groups.google.com/d/topic/beagleboard/p_v98aypDfk/unsubscribe. >>>>> To unsubscribe from this group and all its topics, send an email to >>>>> beagleboard...@googlegroups.com. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/beagleboard/16a9b1d0-6c0e-4b31-ac7f-490bc091f751%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/beagleboard/16a9b1d0-6c0e-4b31-ac7f-490bc091f751%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> -- >>>> For more options, visit http://beagleboard.org/discuss >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "BeagleBoard" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to beagleboard...@googlegroups.com. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/beagleboard/CAJ5%2BLfyKahyeih3Db50ZP7yOiLPUyKt0f6sn7dwnijJ6gEx07Q%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/beagleboard/CAJ5%2BLfyKahyeih3Db50ZP7yOiLPUyKt0f6sn7dwnijJ6gEx07Q%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> For more options, visit http://beagleboard.org/discuss >> --- >> You received this message because you are subscribed to the Google Groups >> "BeagleBoard" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to beagleboard+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/beagleboard/9d7676da-fb51-4ea2-b378-77486ba052bd%40googlegroups.com >> <https://groups.google.com/d/msgid/beagleboard/9d7676da-fb51-4ea2-b378-77486ba052bd%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > -- > For more options, visit http://beagleboard.org/discuss > --- > You received this message because you are subscribed to the Google Groups > "BeagleBoard" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to beagleboard+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beagleboard/CALHSORrX555JB43Db_bsajqhGD_nnSOKx8NmoUAnDbjF7HUubQ%40mail.gmail.com > <https://groups.google.com/d/msgid/beagleboard/CALHSORrX555JB43Db_bsajqhGD_nnSOKx8NmoUAnDbjF7HUubQ%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/CAF%2BMRtkeVNY5Nb6jOL2ztLTyMhc2E8x_xLghnDe_rgjKgU-YtA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.