Вопросы по теме 'system-calls'
Как системный вызов узнает, куда функция-оболочка помещает свои параметры?
Я пытаюсь реализовать системный вызов в Linux (RedHat Enterprise 8), и я немного запутался в том, как он работает. Насколько я понимаю, я реализую оболочку в пользовательском режиме, которая помещает номер системного вызова в eax и параметры в ebx,...
583 просмотров
schedule
15.07.2022
Путаница системных вызовов x86_64 сборки Linux
В настоящее время я изучаю язык ассемблера в Linux. Я использовал книгу «Программирование с нуля», и все примеры 32-битные. Моя ОС 64-битная, и я пытался сделать все примеры в 64-битной. Однако у меня возникают проблемы:
.section .data...
19328 просмотров
schedule
16.04.2024
Чтобы заснуть в C, я должен использовать время с часами или системный вызов?
Я проверял clock() на cplusplus.com . Их пример включает в себя ожидание процесса в течение секунды, а затем вывод строки в цикле, пока не истечет 10 секунд. Мне нужно сделать что-то подобное в домашнем задании, над которым я работаю. Мне было...
1627 просмотров
schedule
23.10.2022
Почему для вызова системных вызовов используется int80h вместо sysenter?
Все учебники и интернет-ресурсы говорят мне, что int 80h — это устаревший стиль для вызова системных вызовов, и на платформах x86 он был заменен на SYSENTER.
Но я только что обнаружил, что моя система все еще использует int 80h. Я знаю такие...
2354 просмотров
schedule
23.04.2024
Возможно ли отслеживать в режиме реального времени все системные вызовы под Linux?
Например, в linux-машине так много процессов. Каждый из них может использовать системный вызов, но обычно используются немногие. Что ж, есть инструмент или способ показать, когда используется системный вызов и какой процесс связан с ним?
1571 просмотров
schedule
25.01.2024
fts_children() не работает
У меня возникли трудности с функцией fts_children() referenced на этой справочной странице http://www.kernel.org/doc/man-pages/online/pages/man3/fts.3.html . Кажется, что fts_children() не получает все файлы в подкаталогах, как утверждается на...
300 просмотров
schedule
01.07.2022
возвращаемые системным вызовом значения и errno
Я использую следующие системные вызовы в своей программе:
recvfrom
sendto
sendmsg
И из каждого упомянутого выше системного вызова я проверяю, завершается ли он без прерывания, и в случае, если он прерван, я повторяю попытку.
Ex:...
9338 просмотров
schedule
15.12.2023
системный вызов execvp() в C
Когда выполняется системный вызов execvp(), возврат невозможен, если вызов успешен. Означает ли это, что процесс никогда не завершится? Если да, то всегда ли он в рабочем состоянии? Я знаю, что это основной вопрос, но я думаю, что у меня серьезная...
712 просмотров
schedule
13.05.2024
Как использовать объект VDSO с помощью собственного языка программирования?
Последние ядра Linux (по крайней мере, на amd64) предоставляют волшебный объектный файл с именем linux-vdso.so.1 , который абстрагирует интерфейс системных вызовов от ядра, позволяя ядру выбирать оптимальное соглашение о вызовах. Если вы пишете код...
6274 просмотров
schedule
21.02.2024
Определение того, что файл копируется за пределы компьютера в LKM
Предполагая, что у меня есть Loadable-Kernel-Module, вставленный в linux-kernel, и я подключил функции чтения, записи, открытия и закрытия. Итак, теперь я могу закрыть доступ к любому файлу, но я хочу, чтобы файлы не копировались за пределы...
190 просмотров
schedule
23.10.2023
Почему системные вызовы реализуются с помощью прерываний, а не шлюзов вызовов?
Насколько я понимаю, системные вызовы ядра ОС обычно реализуются с помощью программного прерывания. На x86 есть ли причина, по которой это выбрано с помощью шлюза вызовов? Шлюзы вызовов кажутся «встроенным» способом сделать именно это: передать...
953 просмотров
schedule
17.03.2024
Системный вызов Splice, что передается в канал? Данные или информация о местонахождении?
Я знаю, что со сплайсингом мы все можем остаться в ядре. Но я не уверен, что это данные или информация о местонахождении, которые передаются в канал.
РЕДАКТИРОВАТЬ 1: Спасибо @vinayak, теперь я знаю, что на самом деле происходит копирование...
527 просмотров
schedule
05.12.2023
Как seccomp-bpf фильтрует системные вызовы?
Я изучаю детали реализации seccomp-bpf, механизма фильтрации системных вызовов, который появился в Linux, начиная с версии 3.5. Я просмотрел исходный код kernel/seccomp.c из Linux 3.10 и хочу задать несколько вопросов по этому поводу.
Из seccomp.c...
2814 просмотров
schedule
25.08.2022
Вызывает ли приложение с графическим интерфейсом системные вызовы для доступа к драйверу устройства?
В среде Linux без графического интерфейса простая программа на языке C с функцией printf фактически вызывает ядро системным вызовом «запись», когда ему нужно что-то написать на дисплее.
Что происходит в среде GUI в Linux? Я не могу поверить, что...
724 просмотров
schedule
11.10.2022
Системный вызов ARM как шаблон С++
Мне нужно вызвать некоторые системные вызовы в моих заглушках newlib, а текущая реализация использует макросы C, которые со временем стали нечитаемыми и ужасно выглядящими. (И я ненавижу макросы...) Однако моя реализация с шаблонами C++ работает...
343 просмотров
schedule
25.08.2022
Понимание POSIX select() с чтением и записью fd_set
Для школьного проекта мы должны реализовать параллелизм на одной машине, используя файловые дескрипторы и метод select(). В программе у нас есть объекты RequestChannel, которые содержат два файловых дескриптора, один для чтения и один для записи,...
1205 просмотров
schedule
07.11.2023
Системный вызов дампа ядра?
у меня вопрос: существует ли системный вызов для создания дампа ядра?
Я знаю, какой дамп ядра может быть сгенерирован сигналом, но я хочу знать, возможно ли это сгенерировать из системного вызова
1604 просмотров
schedule
31.08.2022
Системный вызов Linux в vmlinux и виртуальной памяти
Я нашел код sys_open из бинарного файла vmlinux:
c1143c20: 55 push ebp
c1143c21: 89 e5 mov ebp,esp
c1143c23: 83 ec 10 sub esp,0x10
c1143c26: 89 5d f4 mov DWORD...
132 просмотров
schedule
15.03.2024
Почему time() не вызывает системный вызов?
Когда я "строю" следующую программу на C, time() не вызывает системный вызов.
#include <time.h>
int main() {
return (int)time(NULL);
}
Почему бы нет? Откуда время суток? Вот полный вывод strace на Ubuntu 12.04.
$ gcc -Wall -o...
230 просмотров
schedule
27.04.2024
Печать значений с плавающей запятой с использованием только системных вызовов в C
Я пытаюсь написать программу C для печати файлов в удобочитаемом формате (т.е. в КБ, МБ, ГБ и т. д.). Ввод - это размер файла в байтах. Загвоздка в том, что это должно быть сделано с использованием только системных вызовов и НИКАКИХ библиотечных...
927 просмотров
schedule
09.03.2024