[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. >
_______________________________________________ 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