The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В Си-библиотеке nolibc, входящей в состав ядра Linux, реализована поддержка сигналов

23.01.2023 09:41

Для включения в состав ядра Linux предложены изменения, расширяющие возможности стандартной Си-библиотеки nolibc, входящей в состав исходных текстов ядра Linux (tools/include/nolibc). В случае принятия изменений библиотека будет расширена средствами для обработки сигналов, включающими функции sigaction() и signal().

Проект nolibc входит в состав ядра начиная с выпуска 5.1 и нацелен на предоставление обвязки над базовыми системными вызовами, оформленной в виде минимальной стандартной Си-библиотеки, которую можно использовать для организации работы небольших и низкоуровневых приложений без установки полноценных внешних стандартных Си-библиотек (приложение можно статически скомпоновать с nolibc без привлечения внешних зависимостей). Библиотека очень компактная, например, статически собранный с nolibc процесс init занимает 36 КБ, а с Glibc - 755 КБ.

Основной упор делается на предоставление функций, достаточных для работы программ, поставляемых в initramfs, таких как dash, init и sleep, а также для создания тестовых наборов, оценивающих работоспособность подсистемы ядра. Среди доступных функций: open, close, read, write, time, chown, chmod, mkdir, chroot, dup, wait, execve, fork, ioctl, stat, mount, sleep, mmap, poll, malloc, free и т.п. Поддерживается сборка для архитектур ARM, AArch64, i386, x86_64, RISC-V и MIPS. Из ещё не реализованных возможностей упоминается отсутствие функций для сетевых операций и многопоточности, а также неполный набор функций string.h и stdlib.h.

 
  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Выпуск стандартной Си-библиотеки PicoLibc 1.5
  3. OpenNews: Выпуск системной библиотеки Glibc 2.36
  4. OpenNews: Представлена стандартная Си-библиотека Musl 1.0.0, развиваемая в качестве альтернативы Glibc
  5. OpenNews: Для Linux и Redox представлена реализация Libc на языке Rust
  6. OpenNews: Разработчики из Google предложили разработать свою libc для LLVM
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58532-nolibc
Ключевые слова: nolibc, libc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (117) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:27, 23/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • –8 +/
    Теперь выражение "линукс это просто ядро" можно забыть. А говорящим - давать ссылку на эту новость. Линукс это не только ядро, но ещё и стандартная си библиотека!
     

     ....большая нить свёрнута, показать (45)

  • 1.3, Омномним (?), 10:45, 23/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +13 +/
    Ну, да, запихать всё необходимое для минимальной init-подсистемы прямо в ядро, возможно вместе с таковой в будущем - разумная идея. Для эмбедовки очень пригодится.
     
     
  • 2.14, КО (?), 12:02, 23/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • –5 +/
    Такая же разумная как зонды от всех копрорастов и драйвера для Wireguard.
     
     
  • 3.54, Аноним (53), 17:21, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Если бы ты хоть немного понимал в системном программировании, то понял бы, что единственно возможный вариант.
     
  • 3.121, Аноним (121), 03:46, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Вообще-то ембедовка - реальная, а не как в современных роутерах, где полноценный mips, который помощнее тех 80486 будет, - это как правило один блоб, в котором вообще всё.
     
     
  • 4.134, Омномним (?), 10:13, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Блоб как правило структурный, даже у RTOS'ов.
    Времена неструктурных "на раз" сляпанных блобов почти ушли.
    Встречается только в случае совсем уж fixed-function эмбедовки.
     
  • 2.120, Аноним (-), 02:34, 24/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > Ну, да, запихать всё необходимое для минимальной init-подсистемы прямо в ядро, возможно
    > вместе с таковой в будущем - разумная идея. Для эмбедовки очень пригодится.

    Ну да. Например kexec boot так наверное забавно делать. При этом в отличие от абы каких бутлоадеров при этом есть вся мощь линуха.

     
     
  • 3.135, Омномним (?), 10:14, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Вот да, второе применение - жЫрные дебаг и kexec.
     

  • 1.9, Аноним (9), 11:39, 23/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +1 +/
    Кто-нибудь знает "некостыльное" применение sleep? Не надёжнее ли следить за завершением какого-либо процесса через pid?
     
     
  • 2.15, Аноним (15), 12:10, 23/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > Не надёжнее ли следить за завершением какого-либо процесса через pid?

    какой pid скажет тебе когда подключенное USB устройство готово к обмену ?

     
     
  • 3.22, YetAnotherOnanym (ok), 12:34, 23/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    А какой там у ядра PID, согласно народной традиции?
     
     
  • 4.38, Аноним (15), 14:19, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > А какой там у ядра PID, согласно народной традиции?

    не все драйверы в ядре?

    https://en.wikipedia.org/wiki/Libusb

     
  • 4.111, Аноним (-), 00:04, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Изначально в линуксе все начинается с ядерного треда, его PID 0 вроде бы номин... большой текст свёрнут, показать
     
     
  • 5.146, YetAnotherOnanym (ok), 13:21, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    > Изначально в линуксе все начинается с ядерного треда, его PID = 0
    > вроде бы номинально.

    Вот-вот, я именно его имел в виду. Дождаться завершения PID=0, чтобы определить готовность USB-устройства - эта идея мне нравится.

     
     
  • 6.163, Аноним (-), 23:18, 27/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Он по моему уже не существует на момент старта инита, так что "condition always true, optimize out". А коли так - считайте что usb девайс всегда доступен, с дельфистов пример берите!
     
  • 3.112, Аноним (-), 00:05, 24/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +1 +/
    > какой pid скажет тебе когда подключенное USB устройство готово к обмену ?

    sleep это тоже не подскажет сам по себе :)


     
     
  • 4.141, Аноним (15), 10:34, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > sleep это тоже не подскажет сам по себе

    он используется по прямому назначению - задержка в многозадачной среде исполнения в ожидании готовности устройства

     
     
  • 5.151, Аноним (-), 20:33, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > он используется по прямому назначению - задержка в многозадачной среде исполнения в
    > ожидании готовности устройства

    Тут кмк от деталей все сильно зависит, usb устройства разные бывают. Но вообще есть и менее дурацкие способы отлова наличия нужного девайса. Начиная с рулесов udev допустим, когда тот сам желаемую программу позовет по факту "обнаружен девайс VID:PID такой-то". Можно serial или что там еще взять.

    Я так себе сделал /dev/board0 допустим для вон той платки. Или /dev/china-crap для кетайского сериального шнурка (crap за глючность его чипа). Ну, как появляется так с ним что-то и делается.

     
     
  • 6.155, Аноним (15), 09:38, 25/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > дурацкие способы отлова наличия нужного девайса

    я не про это говорил. Послал ты уже обнаруженной по USB китайской платке команду стереть флешь память - какой удав тебе скажет что процесс завершён и можно следующую команду слать ?  только ждать определённое время - sleep/usleep в зависимости от команды.

     
     
  • 7.157, Аноним (-), 16:11, 26/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > я не про это говорил. Послал ты уже обнаруженной по USB китайской
    > платке команду стереть флешь память - какой удав тебе скажет что
    > процесс завершён и можно следующую команду слать ?

    В моих протоколах мне это ACK-пакет говорит, репортящий статус операции. А, чо, так можно было. Заодно если что-то пошло не так это еще и репортить нехило бы, потому что отдать кастомеру заглюченый девайс - ведет к куче проблем и затрат у всех в этой цепочке.

    > только ждать определённое время - sleep/usleep в зависимости от команды.

    Это что-то совсем уж донный уровень инженерии. Даже для китайцев.

     
     
  • 8.159, Аноним (15), 17:10, 26/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    подозреваю у тебя просто отсутствует опыт https gitlab com dfu-util dfu-util -... текст свёрнут, показать
     
     
  • 9.164, Аноним (-), 23:26, 27/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Чего сказать то хотели Мои протоколы либо успешно прошивают девайс тем что заду... текст свёрнут, показать
     
     
  • 10.168, Аноним (15), 10:22, 31/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    ваши протоколы никто не видел, а DFU отлично работает везде, от микроконтроллеро... текст свёрнут, показать
     
  • 2.94, Аноним (91), 21:29, 23/01/2023 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • +1 +/
    wait, waitpid, а если нужно из этих функций по тайм-ауту выйти, то они прерывают... большой текст свёрнут, показать
     
     
  • 3.140, Аноним (15), 10:31, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > в качестве функции сна лучше юзать nanosleep вместо usleep (если нужны тайминги меньше секунды), т.к. я заметил, что usleep как-будто в busy-waiting сидит

    перепиывал недавно пару открытых проектов, нужна была кросскомпиляция mingw под венду - usleep для венды есть в отличии от nanosleep

     
  • 2.115, Аноним (-), 00:10, 24/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Ну смотри, допустим мы хотим подождать нажатия условного any key, но не хотим чт... большой текст свёрнут, показать
     
  • 2.128, www2 (??), 06:05, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Настраиваешь обработку сигналов и засыпаешь. А что ещё делать, если тебе нужно дождаться поступления сигнала? Только спать.
     

  • 1.11, Аноним (-), 11:40, 23/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +1 +/
    Круто что они сконцентрировались только на актуальных архитектурах. Иначе бы это сильно раздуло код.

    Кто сравнивал размер с минимальным musl?

     
     
  • 2.17, Аночик (?), 12:24, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    745K янв 23 11:20 hello-glibc
    25K янв 23 11:22 hello-musl
     

  • 1.18, Аноним (18), 12:25, 23/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +6 +/
    Когда современное ядро снова на дискету помещаться начнет?
     
     
  • 2.21, Аноним (21), 12:33, 23/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • –1 +/
    Какая дискета? Магнито-оптическая?
     
     
  • 3.29, Аноним (18), 13:14, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    Обычная гибкая магнитная 3.5" дискета на 1.44 МБ.
     
     
  • 4.30, Аноним (30), 13:22, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    Но обычная магнитная дискетка - это 5.25" на 180 KiB. А 3.5" на 1.44 МБ - это 3.5", двухсторонняя и к тому же ещё и двойной плотности.
     
     
  • 5.33, Аноним (18), 13:50, 23/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Если обычная 5.25", почему в начале этого века они не продавались? Ни разу не видел USB FDD дисковод на 5.25". Прикольный бы девайс был.
    Один немец создал прототип: https://www.youtube.com/watch?v=Bjd2jSHBw7E
     
     
  • 6.40, Аноним (2), 14:33, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Потому что в любом магазине был USB-FDD адаптер бери и пользуйся. И шлейфов было полно которые и на 3.5 и на 5.25 приводы одновременно.  Ох молодежь всё бы им чтобы было с USB из коробки.
     
  • 5.109, Омномним (?), 23:59, 23/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +1 +/
    Чего.
    Обычная магнитная дискетка - это 8" на чуть менее 80 кило :D
     
  • 5.110, Омномним (?), 00:00, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    А 3.5 там ещё и на 2.88 были
     
     
  • 6.149, InuYasha (??), 15:03, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Ещё были приводы которые могли дискету форматнуть в 30МБ и крутить её на бешенной скорости, приводя к быстрому износу. ls-120, вроде.
     
     
  • 7.167, Омномним (?), 00:22, 28/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    LS-240, были такие.
    Дело там не в скорости было, там запись диска получалась однократной - для любого изменения приходилось переписывать целиком.
     
  • 2.26, Аноним (26), 12:51, 23/01/2023 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • +4 +/
    А зачем тебе современное? Бери дискету с QNX, добавь драйвера устройств, нашиши или портани нужные программы и пользуйся.
     
     
  • 3.28, Аноним (18), 13:05, 23/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +2 +/
    В современном ядре старые баги исправлены, новые добавлены.
    QNX - не вариант, проприетарщина.
     
     
  • 4.170, Аноним (170), 14:00, 24/11/2024 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    QNX два или три раза в жизни открывали код в эти моменты есть свободны ответвления.
    Более того есть российская импортозамещающая компания успешно подсуетившаяся в те моменты
    и создавшая форки тогда.
     
  • 3.41, Аноним (2), 14:34, 23/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +2 +/
    С чего это QNX вдруг стал не современным?
     
     
  • 4.171, Аноним (170), 14:00, 24/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.31, Аноним (31), 13:41, 23/01/2023 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • +/
    Но для чего? Разьема FDD уже давно нет на материнках.
     
     
  • 3.32, Аноним (31), 13:43, 23/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Разъема )))
     
     
  • 4.161, Олег (??), 23:02, 27/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Разъёма ))).
     
  • 3.34, Аноним (18), 13:52, 23/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Загрузочные CD/DVD диски эмулируют дискеты.
     
     
  • 4.113, Омномним (?), 00:08, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Не совсем дискеты. IDE FDD, вкривь-вкось, можно пихнуть необычную геометрию.
    Ну и да, в El Torito это не обязательно FDD, можно HDD. Причём с LBA.
     
  • 4.116, Аноним (-), 00:14, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Загрузочные CD/DVD диски эмулируют дискеты.

    Да они и HDD эмулируют не хуже.

     
  • 2.39, Аноним (36), 14:20, 23/01/2023 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • –3 +/
    Зачем? Современная дискета - это флешка. Ну ещё с натягом - DVD-RW.
     
     
  • 3.78, Брат Анон (ok), 19:45, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    Нука: запрети аппаратно запись на флешку? Слабо магнитом инфу с флешки стереть?
     
     
  • 4.90, Аноним (-), 21:09, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Нука: запрети аппаратно запись на флешку?

    У меня флеха с readonly свичом есть. Прекрасно работает, становится ридонли.

     
  • 4.154, (?), 09:16, 25/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    с чего угодно стереть можно камнем, главное ударить посильнее
     
     
  • 5.158, Аноним (-), 16:13, 26/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > с чего угодно стереть можно камнем, главное ударить посильнее

    Этот неандерталец совсем ниасилил микроволновки...

     
     
  • 6.160, Гипероним (?), 22:27, 27/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Просто бил недостаточно сильно, видать
     
     
  • 7.165, Аноним (-), 23:28, 27/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Просто бил недостаточно сильно, видать

    Тяжелая, небось, поди еще попади по мелкой флешке таким ящиком :)

     
  • 2.50, whoami (??), 17:01, 23/01/2023 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +2 +/
    Оно помещается (примерно 500 кб в минимуме). См. Floppinux.
     
  • 2.52, Mickey_Mouse (?), 17:19, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Куда дискета будет помещаться?
     
     
  • 3.169, Oldfan (?), 13:22, 26/06/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    в Gotek Floppy Emulator
     

  • 1.20, YetAnotherOnanym (ok), 12:32, 23/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    > dash, init и sleep

    А Busybox? Busybox с ней собрать можно?

     
  • 1.25, Аноним (25), 12:46, 23/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • –1 +/
    а зачем эта обёртка? функционала системных вызовов недостаточно? в статье перечислены все те же функции, которые теперь зачем-то не будут системными вызовами, как в юзерспейсе.
     
     
  • 2.56, Аноним (53), 17:24, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Функционал - это пассивный содомит. А у системных вызовов - функциональность.
     
     
  • 3.100, Аноним (25), 22:20, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    пассивный - это то, что постоянно заботит жителей этой страны
     

  • 1.45, анонимомус (?), 15:57, 23/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +1 +/
    Ножно больше *libc
     
     
  • 2.47, Аноним (-), 16:21, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Ручно больше *libc
    Что это значит вообще?

    Вариации с гениталиями по-крайней мере осмысленны:
    ***во больше *libc
    *****то больше *libc
    А другие конечности не работают.

     
     
  • 3.101, Аноним (25), 22:22, 23/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    тебе нужно перестать бухать. посмотри на шиroрина в его 23 и увидишь, что будет с тобой через лет 20
     

  • 1.107, pavlinux (ok), 23:47, 23/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +1 +/
    Библиотеки - для девочек, только syscall(NR_*...), только хардкор!  
     
     
  • 2.118, Аноним (162), 00:20, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    > Библиотеки - для девочек, только syscall(NR_*...), только хардкор!

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

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

     

  • 1.122, Аноним (122), 03:47, 24/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    >> Из ещё не реализованных возможностей упоминается отсутствие функций для сетевых операций и многопоточности, а также неполный набор функций string.h и stdlib.h.

    Сеть, потоки и utf-8
    Здравствуйте, 750kB

     
     
  • 2.152, Аноним (-), 20:36, 24/01/2023 [^] [^^] [^^^] [ответить]      [к модератору]
  • –2 +/
    Можешь в сорце mirai позырить как сделать из сисколов сеть по минимуму. И никаких 750 кило там точно не было.
     

  • 1.153, bOOster (ok), 06:28, 25/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • –1 +/
    Еще какой-то неосилятор posix решил "переписать", под соусом - "стильно, модно, молодежно". Прогресс во всей красе. Правда прогресс абсолютного бардака...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру