Собрал кросс-gcc компилятор под Powerpc, проверил на простом примере - работает.
Написал примерчик с потоками:
#include <pthread.h>
#include <stdio.h>
#include <errno.h>
extern int errno;void* print_xs(void* unused)
{
while(1)
printf("%s",'x');
return NULL;
}int main(int argc, void** argv)
{
pthread_t thr;
int thr_create_res = pthread_create(&thr, NULL, &print_xs, NULL);
if (thr_create_res == 0){
while(1)
printf("%s",'o');
}
else{
printf("last err: %d\n", errno);
printf("thread create err: %d\n", thr_create_res);
}
return 0;
}Собрал:
gcc -c threads.cpp
gcc -o threads threads.o -lpthreadЗапускаю на TARGET машине:
last err: 4
thread create err: 11В чем может быть причина?
>thread create err: 11
>
>В чем может быть причина?Возможно, что strerror(11) подскажет вам больше.
>>thread create err: 11
>>
>>В чем может быть причина?
>
>Возможно, что strerror(11) подскажет вам больше.тогда уж
strerror(4);)А вообще man pthread_create выдает следующие описание ошибки:
EAGAIN
Insufficient resources to create another thread, or a system-imposed limit on the number of threads was encountered. The latter case may occur in two ways: the RLIMIT_NPROC soft resource limit (set via setrlimit(2)), which limits the number of process for a real user ID, was reached; or the kernel's system-wide limit on the number of threads, /proc/sys/kernel/threads-max, was reached.1. Ресурсы хватит точно, перед запуском проги убил 5 ненужных процессов.
2. /proc/sys/kernel/threads-max - файлик проверил - там 128.
3. Проверил RLIMIT_NPROC:
struct rlimit rlp;
int res = getrlimit(RLIMIT_NPROC, &rlp);
printf("getrlimit result: %d\n", res);
printf("soft limit: %d\n", rlp.rlim_cur);
printf("hard limit: %d\n", rlp.rlim_max);Результат:
getrlimit result: 0
soft limit: 64
hard limit: 64Почему же все-таки не получается создать поток?
> printf("%s",'x');
> printf("%s",'o');Вот эти строки не смущают? Либо %c и 'x', либо %s и "x"! С этого надо бы начать... )