Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2012, 18:23   #1
cstrike
Новичок
Джуниор
 
Регистрация: 29.05.2012
Сообщений: 2
По умолчанию Программирование на С в Unix: signals, longjmp

Здравствуйте, задача следующая:
Нужно написать функцию int thread_create(void (*fp)()), которая реализует thread и в качестве стека для него использует локальный массив. В этом thread`е будет выполняться функция, на которую указывает fp, при чем thread получает управление сразу после создания.
Кроме того, надо написать функции void transfer_control_to_program, void transfer_control_to_thread, которые будут переключать управление между основной программой и реализованной нами нитью каждые 1/4 сек при помощи сигнала SIGALRM.

В общем-то сложность заключается именно с первой функции, а именно, как заставить программу воспринимать массив в качестве стека?

Две другие функции я написал так:
Код:
static sigjmp_buf jmpbp;
static sigjmp_buf jmpbt;

void transfer_control_to_thread(){
	if(sigsetjmp(jmpbp, 0) == 0){
		signal(SIGALRM, transfer_control_to_program);
		siglongjmp(jmpbt,1);
	}
}

void transfer_control_to_program(){
	if(sigsetjmp(jmpbt, 0) == 0){
		signal(SIGALRM, transfer_control_to_thread);
		siglongjmp(jmpbp,1);
	}
}
На мой взгляд логично и должно работать.
Заранее спасибо за ответы.
cstrike вне форума Ответить с цитированием
Старый 30.05.2012, 15:50   #2
cstrike
Новичок
Джуниор
 
Регистрация: 29.05.2012
Сообщений: 2
По умолчанию

Ну так что? Никто не может помочь? Я пытался с помощью inline assembly установить регистры ss на начало массива, а bp и sp на конец, но при запуске я получаю ошибку сегментирования. У кого нибудь есть идеи?
cstrike вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
UNIX. Профессиональное программирование mihali4 Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 3 01.07.2013 02:04
Программирование под Unix. Сигналы ol-k_34 Общие вопросы C/C++ 0 01.05.2012 15:42
strcpy| программирование под Unix Демик Общие вопросы C/C++ 6 30.03.2012 15:14
Программирование в командном процессоре ОС UNIX Proby Помощь студентам 0 17.12.2011 07:10