LINUX.ORG.RU

не компилируется с _syscall

 ,


0

3

Добавил в ядро функцию, сделал обьявление в нескольких файлах.

#include <stdio.h>
#include <asm/unistd.h>
#include <linux/unistd.h>
#define __NR_getdevirq 548
_syscall1(char *,getdevirq, char *, irqdev)
int main()
{
        char *a = (char *)getdevirq("cpu");
        printf("%s\n",a);
}
В ответ
main.c:5:18: error: unknown type name ���getdevirq���
 _syscall1(char *,getdevirq, char *, irqdev)
                  ^
main.c:5:37: error: unknown type name ���irqdev���
 _syscall1(char *,getdevirq, char *, irqdev)
В System.map
c1066e40 T SyS_getdevirq
c1066e40 T sys_getdevirq

Ответ на: комментарий от u0atgKIRznY5

Ядро это всего лишь каталог в линуксе, где находятся файлы с типичным функционалом.

А файлы ядро как читает? Линуксом?

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Операционная система отправляет запрос на шину с помощью процессора, контролёр жесткого диска обрабатывает команду и ищет нужный блок, считывает блок в буфер побайтно, проверяет контрольную сумму и отправляет в память буфер.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

Твоё понимание принципов работы не просто неполное, оно существенно расходится с действительностью. И судя по твоим высказываниям, я сомневаюсь, что ты сейчас собираешься своё понимание как-то менять. Абсолютная, но ничем не подкреплённая уверенность.

Если ты собираешься продолжать программировать, перечитай свои высказывания в этом треде лет через пять.

i-rinat ★★★★★
()
Ответ на: комментарий от u0atgKIRznY5

ядро - это

Всё то, что работает в пространстве ядра (ring 0). Весь код. Будет он управлять железом или нет — дело десятое (уже в микроядерных ОСях управление из ядра лишь частичное, экзо- и наноядра так и вовсе почти всю работу с железом оставляют юзерспейсу).

Вот объясни, почему ты думаешь, что твои представления абсолютно точны и правильны, а все те, кто с этим не согласен, как в этом треде, так и в остальных, — наивные дурачки, не понимающие очевидного?

XMs ★★★★★
()
Ответ на: комментарий от XMs

Я потому что уверен в своей провоте.
Вот даже смотри про экзо ядро.
https://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D0%B7%D0%BE%D1%8F%D0%B4%D1%80%D0%BE

Экзоядро — ядро операционной системы компьютеров, предоставляющее лишь функции для взаимодействия между процессами и безопасного выделения и освобождения ресурсов.

В отличие от них, ОС на основе экзоядра предоставляет лишь набор сервисов для взаимодействия между приложениями, а также необходимый минимум функций, связанных с защитой: выделение и высвобождение ресурсов, контроль прав доступа, и т. д.

Заметил сходство. Здесь видно, что ядро является частью ос.
И так. Ядро это не отдельная программа от операционной системы.
Основа операционной системы ядро? Тогда это нужно лишь использовать для того, чтобы понять некоторые ньюансы ос.
Если ты говоришь что-то про ядро, то лишь нужно упомянуть какое ядро.
Ос использовать для того чтобы обьяснить как управлять компьютером.
И вот насчёт того, что в чём ты уверен убеждая меня что ос это gnu/linux. Так что, эта gnu все волишь только значит - что это не юникс.Если расшифровать, то вот что получиться Линукс это не юникс - это операционная система.

Достоинства и недостатки

Преимущества ОС, построенной на микроядре, по сравнению с ОС, построенной на монолитном ядре:

простота реализации (ядро и компоненты реализуют чётко определённую функциональность, поэтому размер их кода невелик); простота отладки (компоненты — обычные процессы, поэтому могут отлаживаться с помощью инструментов, созданных для отладки процессов); гарантированная безопасность (код небольшого размера можно проверить на корректность вручную или автоматически — с помощью математических рассуждений); надёжность (в ОС с микроядерной архитектурой ошибка в одном из компонентов приведёт к завершению процесса компонента; в ОС с монолитным ядром отказ компонента приведёт к отказу ОС); модульность (в микроядерной ОС большее число компонентов может быть запущено и остановлено по необходимости; например, для исправления ошибки можно внести изменения в код компонента, скомпилировать новый компонент, остановить старый и запустить новый).

Недостатки ОС, построенной на микроядре, по сравнению с ОС, построенной на монолитном ядре:

более низкая производительность (из-за накладных расходов на IPC).

Для того чтобы микроядерная ОС по скорости не уступала ОС, построенной на базе монолитного ядра, требуется очень аккуратно проектировать разбиение системы на компоненты и стараться минимизировать взаимодействие между ними. Таким образом, основная сложность при создании микроядерных ОС — необходимость очень аккуратного проектирования.

Видишь что здесь написано, что такое ос. То что так gnu, они хотят свои программы впарить, прикидываясь ос, хотя ос как сам видишь, функционал который осуществляется без userspace gnu утилит.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

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

Короче, мне от тебя дурно, уходи. И перестань наконец свои домыслы принимать за действительность.

anonymous
()
Ответ на: комментарий от anonymous

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

Оставь свои дешёвые советы при себе. Появляются такие мысли в твоей голове? Зачем ты пишешь слово поняша? Ты так со всеми общаешься или только через интернет?

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

Я так общаюсь только с кончеными аутистами, спасибо, что спросил. Затем, что ты, похоже, болен. Нет, посторонние мысли не появляются. Советы грамотные и уместные, тебе стоит прислушаться.

anonymous
()
Ответ на: комментарий от anonymous

Ну ты конечно тут написал, так любой может писать, слова ничего опасного не несут. Незнаю что ты пытаешься своими словами мне обьяснить, что ты здоровый человек. Даёшь такие советы

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

Ты наверное обьяснять то толком не умеешь, поэтому пишешь простые фразы. Наверное это из-за того что у тебя место в голове простаивает, и ты их разными поняшами аутистами захламляешь.

Советы грамотные и уместные, тебе стоит прислушаться.

Ну раз ты себя такого грамотного сделал, так как что знаешь то и советуешь, то и придерживайся своим советам, читай и произноси.
Видимо по теме насчёт SYSCALL у тебя идей как правильно написать совсем нет?
Не хочешь помочь? Ума хватит?

u0atgKIRznY5
() автор топика

все волишь

/thread

false ★★★★★
()
Ответ на: комментарий от u0atgKIRznY5

А как тогда файл читается в «действительности»?

Это вопрос из разряда: «А как в „действительности“ ангелы проходят игольное ушко?»

На них нельзя ответить, не погрузившись в заблуждения собеседника. То ещё удовольствие.

В общем, у тебя вопросы неправильные.

i-rinat ★★★★★
()
Ответ на: комментарий от u0atgKIRznY5

Ты вообще не понимаешь, чего цитируешь. Попробую объяснить языком 7-го класса. ОС — множество. Ядро — элемент этого множества. Юзерспейсные утилиты для взаимодействия с ядром, предоставления пользователю возможности взаимодействовать в компьютером и для многого другого — другой элемент этого же множества. К более сложным вещам перейдём, когда в полной мере осознаешь написанное

XMs ★★★★★
()
Ответ на: комментарий от XMs

Ты давай лучше напиши как правильно написать системную функцию, чтобы вернулась строка в принятом аргументе, а то я вижу ты стараешься хоть в чём то превзойти. В умении на уровне седьмого класса обьяснять? Если ты не разработчик ядра, то чем ты мне можешь помочь? От тебя толку нет.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от i-rinat

Ну а я написал как файл считается с диска, хоть с произвольным доступом хоть нет.
Видимо ты не хочешь раскрывать информацию, о том что знаешь.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

Ну а я написал как файл считается с диска, хоть с произвольным доступом хоть нет.

Нет, не написал. Давай я немного утрирую, чтобы и тебе стало понятным абсурдность твоих высказываний.

«Я нажимаю на кнопку питания, нефтяная вышка выкачивает нефть, из которой делается мазут. Мазут доставляется в ТЭЦ, где он сгорает, производя электричество. Оно приходит в розетку, и так файл читается с диска.»

Как считаешь, что не так в этом объяснении?

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Так как я написал, это действует так в любой ос. Ты мне написал процесс доставки.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

Если ты мне даёшь такую ссылку, да и ещё на английском языке, то о каких твоих знаниях речь идёт?

facepalm

anonymous
()
Ответ на: комментарий от u0atgKIRznY5

Ты давай лучше напиши как правильно написать системную функцию

Всё уже написано выше по треду. Если ты не умеешь читать, то это не мои проблемы. Или предлагаешь за тебя готовый код писать? С этим в job

XMs ★★★★★
()
Ответ на: комментарий от XMs

С этим в job

Как будто кто-то за такую работу возьмётся. Ему не задачу нужно выполнить, а объяснить. И это при том, что понимать он совершенно не желает.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Вообще есть мнение, что это такой троллинг. Ну либо поциент хочет себе славу Царя, Дениски и Куранина вместе взятых

XMs ★★★★★
()
Ответ на: комментарий от XMs

Ты бы хоть про виртуальную память почитал, наверное. char * возвращает указатель, а не объект «строка» (в сишке объектов, как известно, нет). Теперь вопрос: куда он будет указывать после получения?

Вот это ты что имел ввиду?

Ты представляешь себе, сколькими способами можно передать массив байтов из ядра в процесс (и наоборот)? Я понятия не имею, зачем тебе это, какой у тебя use-case и для чего оно будет в дальнейшем использоваться, соответственно, никак не назову лучшего решения, даже если захочу.

Я у тебя не спрашивал какие есть способы писатель. Нужно сделать системную функцию чтобы её можно было вызвать из программы.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

Вот это ты что имел ввиду?

Что адрес после передачи становится невалидным, ибо указывает неизвестно куда. Я тебе даже графически это изображу, может, хоть так понятней станет:

       Kernel            RAM              Proc
       #----#           #----#           #----#
       |    |           #----#           |    |
       |    |     #---->| dt |<----#     |    |
       |    |     |     #----#     |     |    |
       #----#     |     |    |     |     #----#
0x02FE | dt |<----#     |    |     |     | ?? | 0x02FE
 ^     #----#           |    |     V     #----#  ^
 |     |    |           |    |    0xDA45 | dt |  |
 |     |    |           |    |           #----#  |
 |     |    |           |    |           |    |  |
 |     #----#           #----#           #----#  |
 |                                               |
 #-----------------------------------------------#

XMs ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.