Вопросы по теме 'system-calls'

Как системный вызов узнает, куда функция-оболочка помещает свои параметры?
Я пытаюсь реализовать системный вызов в Linux (RedHat Enterprise 8), и я немного запутался в том, как он работает. Насколько я понимаю, я реализую оболочку в пользовательском режиме, которая помещает номер системного вызова в eax и параметры в ebx,...
583 просмотров
schedule 15.07.2022

Путаница системных вызовов x86_64 сборки Linux
В настоящее время я изучаю язык ассемблера в Linux. Я использовал книгу «Программирование с нуля», и все примеры 32-битные. Моя ОС 64-битная, и я пытался сделать все примеры в 64-битной. Однако у меня возникают проблемы: .section .data...
19328 просмотров

Чтобы заснуть в 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 просмотров

системный вызов 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 просмотров

Почему системные вызовы реализуются с помощью прерываний, а не шлюзов вызовов?
Насколько я понимаю, системные вызовы ядра ОС обычно реализуются с помощью программного прерывания. На 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 просмотров

Понимание 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 просмотров

Почему 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