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

Reply via email to