Как включать math.h #include <math.h> на исходном файле ядра?

Примечание: Eclipse 4 по умолчанию стал немного лучше, ошибка 420238 закрыта:

[CSS] Сокращение использования пробелов в темах Eclipse по умолчанию

До:

http://blog.vogella.com/wp-content/uploads/2014/01/Java-test-src-test-Main.java-vogella-Development-Tools-_009.png

После:

http://blog.vogella.com/wp-content/uploads/2014/01/Java-test-src-test-Main.java-vogella-Development-Tools-_010.png

См. Ларс Фогель статья [112] об этом:

Если вы запустите следующую веху Eclipse 4.4 , Eclipse использует гораздо меньше пробелов и оставляет больше места для важного содержания.

(Это было бы 4,4 М5)

Хотя это на техническом уровне тривиальное изменение, я надеюсь, что это улучшит первоначальное восприятие людей при использовании Eclipse.

Огромное спасибо Даниэлю Ролке, Робину Стокеру и Дани Мегерту за большую часть работы, и большое спасибо всем заинтересованным сторонам в отчете об ошибках, чтобы принять это изменение.

5
задан samoz 18 June 2009 в 13:55
поделиться

10 ответов

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

Но одно решение может, использовать команды read () и write () в модуле ядра для отправки информации между пространство пользователя и пространство ядра.

-1
ответ дан 18 December 2019 в 08:30
поделиться

Вы не можете использовать библиотеку C в модуле ядра, это еще более верно для части математической библиотеки.

9
ответ дан 18 December 2019 в 08:30
поделиться

Вы не можете включить модуль C пользовательского пространства в пространство ядра. Также вы уверены, что хотите этим заниматься? Эта ветка может помочь http://kerneltrap.org/node/16570 . Вы можете выполнять математические функции внутри ядра, просто поищите на http://lxr.linux.no/ нужную функцию.

4
ответ дан 18 December 2019 в 08:30
поделиться

Стандартные библиотеки недоступны в ядре. Сюда входят libc, libm и т. Д. Хотя некоторые функции в этих библиотеках реализованы в пространстве ядра, некоторые - нет. Не зная, что вы пытаетесь вызвать, невозможно точно сказать, следует ли вам делать то, что вы пытаетесь сделать в пространстве ядра.

Я должен также отметить, что ядро ​​НЕ имеет доступа к FPU. Это сделано для экономии времени при переключении задач (поскольку сохранение регистров FPU добавит ненужных накладных расходов при выполнении переключения контекста). Вы можете получить доступ к FPU из пространства ядра, если действительно этого хотите, но вы должны быть очень осторожны, чтобы при этом не испортить регистры FPU пользовательского пространства.

Изменить:

4
ответ дан 18 December 2019 в 08:30
поделиться

Пространство ядра AFAIK отделено от пространства пользователя, как и исходный код. / usr / include предназначен для общего программирования.

1
ответ дан 18 December 2019 в 08:30
поделиться

Этот предполагает, что выполнение вычислений с плавающей запятой в ядре не так просто, как в коде пользовательского пространства. Другой пример, предполагающий, что это сложно.

Все еще ищу более окончательный ответ.

1
ответ дан 18 December 2019 в 08:30
поделиться

ну, вы не можете, вы можете переписать нужные вам функции в своем модуле, это грязно, но должно работать ...

0
ответ дан 18 December 2019 в 08:30
поделиться

Большое спасибо за ваши комментарии

Использование математических функций

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

Исходный файл ядра (пространство ядра) ---> Приложение C (пространство пользователя)

                                       |

                                   <---|

Исходный файл ядра

Итак мы можем включить файл заголовка в исходный код ядра. В случае какого-либо события он передает значения в приложение C (пространство пользователя)

Подробности: Я пытаюсь изменить свои события HID-джойстика (абсолютные x, y), поэтому он может перемещаться только в улучшенное место , который будет генерироваться моим приложением, с некоторыми математическими функциями, такими как (pow, tan и т. д.).

Поэтому я использовал hid-input.c для получения необработанных событий и их изменения. который будет использоваться для подсистемы ввода через модуль ядра hid -

Ищу ваши комментарии

С уважением.

0
ответ дан 18 December 2019 в 08:30
поделиться

Может быть, попробовать использовать двойные кавычки (") вместо одинарных?

-1
ответ дан 18 December 2019 в 08:30
поделиться

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

Если вам действительно нужно:

  • возможно, вы могли бы скомпилировать свое собственное ядро ​​с поддержкой с плавающей запятой
  • , вы могли бы заблокировать переключение контекста внутри в ваших операциях с плавающей запятой
  • лучше всего будет использовать арифметику с фиксированной запятой.
2
ответ дан 18 December 2019 в 08:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: