pthread_attr_getstack im main

04/05/2011 - 10:37 von JimmyO | Report spam
Hallo,

Möchte gerne im main()
die Stackadresse & Size ermitteln.

err = pthread_getattr_np (pthread_self(), &attr);
err = pthread_attr_getstack(&attr, &stackptr, &stacksize);

es ist kein err vorhanden.
Nur stackptr & stacksize sind nicht gültig.
laut /proc/.../maps.

jimmyo
 

Lesen sie die antworten

#1 Rainer Weikusat
04/05/2011 - 14:03 | Warnen spam
JimmyO writes:
Möchte gerne im main()
die Stackadresse & Size ermitteln.

err = pthread_getattr_np (pthread_self(), &attr);
err = pthread_attr_getstack(&attr, &stackptr, &stacksize);

es ist kein err vorhanden.
Nur stackptr & stacksize sind nicht gültig.
laut /proc/.../maps.



Wenn ich hier folgendes Program uebersetze und ausfuehre:


#define _GNU_SOURCE
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>

void *thread(void *unused)
{
pause();
return NULL;
}

int main(void)
{
pthread_t tid;
pthread_attr_t attr;
void *saddr;
size_t ssize;

pthread_create(&tid, NULL, thread, NULL);
pthread_getattr_np(tid, &attr);
pthread_attr_getstack(&attr, &saddr, &ssize);
printf("ssaddr %p\tssize %zu", saddr, ssize);

pause();
return 0;
}


bekomme ich als Adresse die Startadresse der guard page unterhalb des
thread-stacks und als Groesse die Summe der Grossen von guard page
(4K) und Stack (8M).

Ähnliche fragen