Описание тега ucontext
The <ucontext.h> header defines mcontext_t and the associated functions getcontet, setcontext, swapcontext etc. in POSIX. Often used for implementing co-routines.
</ucontext.h>
0
ответов
Семафоры, использующие ucontext.h
В основном я провел 15 часов без сна, пытаясь выяснить семафоры. Может кто-нибудь объяснить мне, что не так с моим текущим кодом? Я считаю, что моя проблема с P(). Я не могу понять, как правильно блокировать и менять местами. Это было для домашней р…
26 апр '13 в 00:21
2
ответа
getcontext и setcontext не будут работать в функциях
Я пытаюсь скопировать контекст потока, включая стек, чтобы создать контрольную точку, которую я могу восстановить позже. По этой причине я попытался переместить вызов getcontext и setcontext в функцию, которая также сохраняет стек, но это не сработа…
05 июн '13 в 22:35
2
ответа
Valgrind ошибка и UContext. Почему "Использование неинициализированного значения размера 8"?
Я пытался понять, почему valgrind жалуется на "Использование неинициализированного значения размера 8" для этой небольшой тестовой программы, которая использует ucontexts. Это в основном программа, которая создает ucontexts "n_ucs" и переключает их …
06 сен '14 в 18:05
1
ответ
Почему печать в stderr вызывает ошибку сегментации при работе с ucontext?
Я работал над проектом для курса по операционным системам. Задача состояла в том, чтобы реализовать библиотеку для работы с потоками, аналогичную pthreads, но гораздо проще. Цель этого состоит в том, чтобы практиковать алгоритмы планирования. Конечн…
23 дек '18 в 01:34
1
ответ
Внутренние компоненты переключателя контекста Linux: Что происходит, когда процесс завершается до прерывания таймера?
Как происходит переключение контекста в ядре Linux, когда процесс завершается до прерывания по таймеру? Я знаю, что если процесс работает и происходит прерывание по таймеру, то schedule Функция вызывается автоматически, если флаг установлен, функция…
23 сен '16 в 17:17
1
ответ
Ucontext в Linux
Я читал, что ucontext используется для сохранения контекста между несколькими потоками в Linux. Поскольку ОС выполняет переключение контекста между различными потоками, почему linux предоставляет этот заголовочный файл (ucontext.h) для переключения …
21 июл '13 в 04:03
1
ответ
Переключение стека вверх / вниз с помощью getcontext/setcontext
Я пытаюсь понять, будет ли getcontext/setcontext работать правильно в конкретном сценарии. Я вижу, как setcontext() может быть использован для размотки стека обратно в определенное место в истории. #include <stdio.h> #include <ucontext.h>…
27 фев '13 в 15:08
1
ответ
Переключение контекста - ucontext_t и makecontext()
Я изучаю переключение контекста в программировании на C и нашел следующий пример кода в Интернете. Я пытаюсь выяснить, только ли makecontext() Функция может вызвать функцию, которая что-то делает. Другие функции, такие как setcontext(), getcontext()…
30 янв '14 в 22:13
1
ответ
Почему у ucontext такие высокие накладные расходы?
В документации для Boost.Context в Boost v1.59 представлены следующие результаты сравнения производительности: +----------+----------------------+-------------------+-------------------+----------------+ | Platform | ucontext_t | fcontext_t | execut…
25 окт '15 в 16:13
1
ответ
Как правильно работать с `ucontext_t`?
Из исходного кода Redis, в файле src / debug.c, он использует backtrace() войти в стек вызовов. в рамках этой операции я заметил getMcontextEip()В Linux это выглядит так: static void *getMcontextEip(ucontext_t *uc) { /* Linux */ #if defined(__i386__…
20 сен '13 в 09:55
1
ответ
Использование третьего параметра (void* context) обработчика sigaction с SIG_INFO приводит к ошибке сегментации
Я сократил огромный код планировщика оптоволокна, который вызывал проблему, до строк ниже.То, что я ожидаю, - это чистый возврат к контексту, каждый раз передаваемый обработчику.То, что я получаю, это "Обработчик", распечатанный три раза, а затем ош…
27 мар '13 в 17:22
1
ответ
Почему makecontext не вызывает мою функцию?
Моя программа содержит строку makecontext( &threadList[ numThreads ].context, (void (*)(void)) &threadStart, 1, 5); Где threadStart определяется как: static void threadStart(int x){ printf("Yes! Yes! %d\n", x); } Я думал, что это должно прив…
23 фев '19 в 20:31
2
ответа
Такой файл не найден с semaphore.h и ucontext.h
У меня есть мой код здесь: #define _GNU_SOURCE #include "lib-ult.h" #include <stdio.h> #include <stdlib.h> #include <ucontext.h> #include <semaphore.h> #define TRUE 1 #define FALSE 0 #define FAILURE -1 typedef struct Node { u…
26 мар '14 в 07:55
1
ответ
Почему я получаю ошибку сегментации, когда я сигнал
Я получил ошибку сегментации, когда имею дело с сигналомSIGALARM, Вот мой код class UThread{ public: UThread(){} ~UThread(){ signal(SIGALRM,SIG_IGN); for(size_t i=0;i<thread_list.size();i++){ delete thread_list[i]->uc_stack.ss_sp; delete threa…
16 янв '18 в 03:09
0
ответов
Ошибка сегментации setcontext() при нормальной работе, но хорошо работает под GDB
Я пытаюсь создать проект операционной системы, который получает контекст текущего потока и сериализуется, отправляет его по сети на другой компьютер и выбирает, где поток остановился, и продолжает работу. (Так называемый thread-migrator). Мне удалос…
16 ноя '17 в 16:54
1
ответ
Внедрение библиотеки потоков на уровне пользователя, но код сохраняет ошибки сегмента, есть идеи, почему?
Так что, как говорится в заголовке, мой код, к сожалению, сохраняет ошибки. Я почти уверен, что все правильно установил malloc, и я считаю, что мои функции верны для тестового примера, который у меня есть, но он все еще вызывает ошибки. Я просто хот…
03 ноя '13 в 02:49
1
ответ
Переключение между выполнением двух контекстов функции
Я пытаюсь написать программу, в которой я определил две функции, и одна печатает нечетные числа, а другая печатает четные числа. Программа выполняет функцию в течение определенного периода времени, и когда она получает сигнал тревоги, она начинает в…
22 авг '16 в 12:49
2
ответа
Тип `stack_t` больше не определен в Linux?
Платформа Linux является Ubuntu 12.04 У меня есть следующие заголовки, включенные в мой исходный код: #include <unistd.h> #include <signal.h> #include <ucontext.h> ... Однако, когда я компилирую его, он жалуется /usr/include/x86_64…
26 дек '13 в 03:26
1
ответ
Переключение контекста выполняет один и тот же оператор дважды
Я пытаюсь узнать, как работает переключение контекста и как заставить ваш процесс переключать контекст после получения определенного сигнала. Вот мой код #include<stdio.h> #include<stdlib.h> #include<ucontext.h> #include<signal.…
11 сен '16 в 15:02
2
ответа
Ошибка сегментации с ucontext makecontext на OS X 10.10
#include <stdio.h> #include <stdlib.h> #define _XOPEN_SOURCE 600 #include <ucontext.h> /* Tests creation. Should print "Hello World!" */ typedef struct thread_t{ ucontext_t thread_context; }thread_t; void *thr1(void *in) { printf("…
21 сен '15 в 20:20