2017-12-12 34 views
1

x86 SE 모드에서 간단한 pthread 프로그램을 실행하려고했습니다.m5threads를 실행하는 방법은 무엇입니까?

이 작업을 수행하는 유일한 방법은 m5threads입니까? 내가 놓친 거지 뭔가

pthread.c:40:2: error: #error "spinlock routines not available for your arch!\n" 

있습니까 :

나는 make 내가 아래에 오류가 발생하여 libpthread를 컴파일 할 때? 어딘가에서 코드의 일부 수정 또는 누락 된 경로 변수가있을 수 있습니다. 내가 파일 spinlock_x86.htls_defs.h을 가지고 있기 때문에.

답변

1

x86 호스트에서 x86을 시뮬레이트하는 경우 m5threads를 사용할 필요가 없습니다. gem5는 호스트의 공유 라이브러리 에서 코드를 실행하도록 지원합니다. 따라서 "-lpthread"로 프로그램을 컴파일하고 gem5에서 실행하면됩니다.

정상적으로 작동하려면 runscript를 사용해야합니다. IIRC를 사용하려면 정확한 CPU 수를 스레드로 설정하고 각 CPU에 대해 동일한 이진수로 작업량을 설정해야합니다.

+0

gcc -lpthread -o thread thread.c를 사용했지만 다음과 같이 /tmp/ccfigdKl.o 오류가 발생했습니다 :'main '함수에서 : thread.c :(. text + 0xaf) : 정의되지 않은 참조 to pthread_create ' thread.c :(. 텍스트 + 0xd7) :'pthread_create'에 대한 정의되지 않은 참조 thread.c :(. 텍스트 + 0xef) :'pthread_join '에 대한 정의되지 않은 참조 thread.c :(. 텍스트 + 0x103) :'pthread_join '에 대한 정의되지 않은 참조 collect2 : 오류 : ld가 1 종료 상태를 반환했습니다. -pthread를 사용하여 컴파일하려고했으나 컴파일은 잘되지만 SE 모드에서는 gem5로 실행되지 않습니다. – nk1991

+0

경고 : syscall 무시 set_robust_list (...) 치명적인 : syscall futex (# 240) 구현되지 않았습니다. 메모리 사용량 : 583416 KBytes pthread를 사용하여 컴파일 한 후 SE 모드에서이 오류가 발생합니다 – nk1991