Hi Hossein, I used the m5thread_x86.o file and compiled my sample code (attached with this mail). I used the following 2 commands to build my file
gcc -g -O3 -c -o semodePthread.o semodePthread.c gcc -static -o semodePthread semodePthread.o m5threads_x86.o By running semodePthread in gem5 se mode, I see that pthread_create is succeeding but it gets stuck in pthread_join. Also I see printf in thread function is not running. Am I missing something? Or am I building it wrong? ANy suggestions would be greatly appreciated. On Mon, Jul 26, 2021 at 2:03 AM Hossein Golestani <hosse...@umich.edu> wrote: > [I'm resending my reply without the attachments in case they caused it to > get into the spam folder.] > > Hi Krishnan, > > I remember that I also failed to build m5threads on a particular system, > but I managed to build it on another system with a relatively old config (I > have attached the output m5threads object files for x86 and ARM v7 to this > email). If I remember correctly, that system had the Linux kernel 3.19 and > gcc 4.8. You should be able to link the attached object file to your > multi-threaded program compiled on a system with a newer kernel/compiler. > Hope this helps. > > Thanks, > Hossein > > > On Sat, Jul 24, 2021 at 11:24 PM krishnan gosakan < > krishnan.gosa...@gmail.com> wrote: > >> Hi Hossein, >> I tried building m5threads but it failed. What system configuration are >> you using to build m5threads? >> What kernel version do you use and what compiler do you use? >> >> On Sat, Jul 24, 2021 at 10:28 PM Hossein Golestani <hosse...@umich.edu> >> wrote: >> >>> Hi Krishnan, >>> >>> I use m5threads, which is a light-weight alternative for pthread, to >>> simulate multi-threaded programs in the SE mode: >>> https://github.com/gem5/m5threads >>> (I'm not sure if there are any other ways.) >>> >>> Thanks, >>> Hossein >>> >>> >>> On Sat, Jul 24, 2021 at 11:00 AM krishnan gosakan via gem5-users < >>> gem5-users@gem5.org> wrote: >>> >>>> Hi all, >>>> I am trying to run a code with pthread in gem5 se mode. The code runs >>>> perfectly when launched from command prompt but pthread_create returns >>>> error code 11 when run in se mode. Is there anything special I should do to >>>> make pthread run in se mode. From the tests directory, I see that C++ >>>> std::thread is running perfectly in gem5 se mode. Any help would be >>>> appreciated. >>>> Thank you. >>>> >>>> Sample code I use in gem5 se mode >>>> >>>> #include <stdio.h> >>>> #include <pthread.h> >>>> >>>> void *doWork1(void *arg) >>>> { >>>> for (int i=0; i<1000000000; i++) >>>> ; >>>> printf("work completed\n"); >>>> } >>>> >>>> int main() >>>> { >>>> pthread_t thread; >>>> int error = pthread_create(&thread, NULL, doWork1, NULL); >>>> if (error == 0) >>>> { >>>> printf("thread created\n"); >>>> pthread_join(thread, NULL); >>>> printf("thread work complete\n"); >>>> } >>>> else >>>> { >>>> printf("error in thread creation %d\n",error); >>>> } >>>> return 0; >>>> } >>>> >>>> -- >>>> Regards, >>>> Krishnan. >>>> _______________________________________________ >>>> gem5-users mailing list -- gem5-users@gem5.org >>>> To unsubscribe send an email to gem5-users-le...@gem5.org >>>> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s >>> >>> >> >> -- >> Regards, >> Krishnan. >> > -- Regards, Krishnan.
#include <assert.h> #include <stdio.h> #include <pthread.h> void *doWork1(void *arg) { printf("work completed\n"); } int main() { pthread_t thread; int error = pthread_create(&thread, NULL, doWork1, NULL); assert (error == 0); printf("thread created\n"); pthread_join(thread, NULL); printf("thread work complete\n"); return 0; }
_______________________________________________ gem5-users mailing list -- gem5-users@gem5.org To unsubscribe send an email to gem5-users-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s