Описание тега 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 &lt;stdio.h&gt; #include &lt;ucontext.h&gt…
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( &amp;threadList[ numThreads ].context, (void (*)(void)) &amp;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 &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;ucontext.h&gt; #include &lt;semaphore.h&gt; #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&lt;thread_list.size();i++){ delete thread_list[i]-&gt;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 &lt;unistd.h&gt; #include &lt;signal.h&gt; #include &lt;ucontext.h&gt; ... Однако, когда я компилирую его, он жалуется /usr/include/x86_64…
26 дек '13 в 03:26
1 ответ

Переключение контекста выполняет один и тот же оператор дважды

Я пытаюсь узнать, как работает переключение контекста и как заставить ваш процесс переключать контекст после получения определенного сигнала. Вот мой код #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;ucontext.h&gt; #include&lt;signal.…
11 сен '16 в 15:02
2 ответа

Ошибка сегментации с ucontext makecontext на OS X 10.10

#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define _XOPEN_SOURCE 600 #include &lt;ucontext.h&gt; /* 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