Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
1 / 1 / 1
Регистрация: 23.07.2012
Сообщений: 20

Создание системного вызова в minix

25.05.2014, 19:14. Показов 3311. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, выполняю лабораторную работу по ОС Minix 3.2.1. Суть работы такова: Необходимо создать системный вызов, который по заданному идентификатору процесса (pid) возвращает имя этого процесса, то есть имя исполняемого файла без пути.
И у меня возник ряд вопросов, загуглить которые не имеет смысла:
1) Обязательно ли производить полную компиляцию системы после написания функции с вызовом? Просто компиляция занимает у меня около четырех часов драгоценного времени.
2) Нормально ли это, если после создания файла с функцией в каталоге /usr/src/servers/pm, по команде make выскакивает ошибка линковки на этот файл(в файле callnr.h все переопределил #define GETNAME 69 и даже занес в таблицу функций table.c), хотя код функии был представлен преподавателем, вот кстати он:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "pm.h"
#include "mproc.h"
//#include <stdio.h>
 
/*========================================*
 *                do_getname
 *=======================================*/
int do_getname()
{
  int i;
  char *name = "NO_NAME";
 
//  printf("procname: pid = %d\n", m_in.m1_i1);
//  printf("procname: addr = %x\n", m_in.m1_p1);
  for (i = 0; i < NR_PROCS; i++) {
    if (mproc[i].mp_pid == m_in.m1_i1)
      break;
  }
  if (i < NR_PROCS) {                      // pid found
    name = (char*)&mproc[i].mp_name;
  }
//  printf("procname: name = %s\n", name);
  return sys_vircopy(SELF, (vir_bytes)name, 
              m_in.m_source, (vir_bytes)m_in.m1_p1, 
              (phys_bytes)(strlen(name) + 1));
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.05.2014, 19:14
Ответы с готовыми решениями:

Прогон программы с использованием системного вызова exec()
#include &lt;sys/types.h&gt; #include &lt;unistd.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main(int argc, char *argv,char *envp) { ...

Модификация системного вызова
На ARMv7 стоит ядро 4.9.14. Не могу изменить содержимое в sys_call_table: sys_call_table = new_sys_mkdir; На старом ядре и старой...

Вылетает при использовании системного вызова lseek
Программа ищет строку в файле, они вводятся с клавиатуры. Нужно чтобы работало с любыми размерами файлов, но если использую системный вызов...

3
deleted
177 / 50 / 5
Регистрация: 29.03.2013
Сообщений: 365
26.08.2014, 09:34
1) даже полную компиляцию пм сервера не надо делать, только твой файл и слинковать все вместе.
2) да, нормально
1
9 / 10 / 2
Регистрация: 18.06.2013
Сообщений: 119
29.08.2014, 19:50
Цитата Сообщение от @lex Посмотреть сообщение
системный вызов
Вообще... под syscalls подразумеваются операции системы такие, как ввод, вывод, открыть, закрыть, смонтировать, создать дочерний процесс и т.п. (см. файл unistd.h).
Цитата Сообщение от @lex Посмотреть сообщение
...то есть имя исполняемого файла без пути
пиши "ls /proc/PID", где PID - номер желаемого процесса.
/proc/PID - это папка, в которой будут храниться 20 (кажется) файлов, один из них является указателем (по факту ссылка или поток) на имя запущенного файла.
Цитата Сообщение от @lex Посмотреть сообщение
омпиляция занимает около четырех часов драгоценного времени
Многовато четыре часа-то!
0
deleted
177 / 50 / 5
Регистрация: 29.03.2013
Сообщений: 365
30.08.2014, 13:20
Ты заголовок то посмотри, откуда там в minix 20 файлов,http://code.metager.de/source/... s/pid.c#20
Дай бог 5 наскребсти. И файла ехе там нету как на лине
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.08.2014, 13:20
Помогаю со студенческими работами здесь

Код до системного вызова fork() выполняется дважды
Друзья, всем добрый день! Столкнулся со следующей проблемой. Простенькая программка, которая должна создавать процесс потомок и более...

Minix
Простите, что сюда. Некуда больше :) При компиляции тестовых исходников на Minix: # cd /usr/src/test # make error: read-only...

Чего бы написать на С под Linux\Minix?
Доброго времени суток! Подскажите какую нибудь идею для системного софта под *nix. Что то полезное, что можно как то использовать, а не...

Создание собственного системного меню с иконками
Доброго времени суток. Хочу создать свое собственное системное меню. Сделать просто текстовую строку несложно. Не могу понять как...

Как выключить виртуальную Minix командой shutdown?
Раздела под Minix тут нет, напишу в линукс. Установил на Virtual Box minix, все по инструкции. После команды shutdown зависает на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru