Мобильное программирование приложений реального времени в стандарте POSIX



Пример 5.17


/* * * * * * * * * * * * * * * * * * * * * * */

/* Программа демонстрирует удержание в памяти*/

/* всего адресного пространства процесса, */

/* в том числе стека с учетом возможного роста*/

/* * * * * * * * * * * * * * * * * * * * * * */

#include

#include

#define LOCKED_STACK_SIZE 048576

/* * * * * * * * * * * * * * * * * * * * * * * * * * * */

/* Следующая функция нужна, чтобы вызвать рост стека до*/

/* требуемого размера. На всякий случай примем меры для*/

/* защиты от слишком умного оптимизирующего компилятора*/

/* * * * * * * * * * * * * * * * * * * * * * * * * * * */

static int dummy_func (void) {

char dummy_arr [LOCKED_STACK_SIZE];

int i;

int res = 0;

dummy_arr [0] = 0;

for (i = 1; i < LOCKED_STACK_SIZE; i++) {

dummy_arr [i] = dummy_arr [i - 1] + i;

}

for (i = 0; i < LOCKED_STACK_SIZE; i++) {

res += dummy_arr [i];

}

return (res);

}

/* * * * * * * * * * * * * * * * * * * * * * * * * */

/* Функция main() вызывает вспомогательную функцию */

/* * * * * * * * * * * * * * * * * * * * * * * * * */

int main (void) {

if (mlockall (MCL_CURRENT | MCL_FUTURE) != 0) {

perror ("MLOCKALL");

return (1);

}

fprintf (stderr, "Результат вспомогательной функции:"

"%d\n", dummy_func ());

return 0;

}




Содержание  Назад  Вперед