The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз ядра Linux 6.2"
Отправлено Аноним, 24-Фев-23 03:17 
>> Это называется "сериализация-десериализация". Но к сожалению не халявно по ресурсам
> Это если на каждый чих буфера выделять, то не халявно.

Это не имеет отношения к выделению буферов. Вот смотри, прямо сейчас у меня есть буфер который я бы хотел рассматривать и как u8[N] и как u32[N/4], тот случай когда раз в год и union мог бы иметь пойнт. Но на самом деле меня вообще вся пачка битов интересовала. Я бы вкатил им union так то, но u32 может быть как big-endian так и little endian, и вот тут я грабелек откушаю оптом и в розницу. И вот именно совершенно халявного (по объему кода и скорости) решения на такие ситуации может и не быть. Даже просто портабельно записать в файл или провод u32 - не, как просто единичная операция это сразу же познакомит нас с Endianess платформы и с тем фактом что она разная бывает.

> А если как с потоком работать, передавая указатели на функции преобразования, то
> можно и без буферов и их копирования обойтись,

Дело не в буферах а в именно "функциях преобразования" так то. Одно дело послать поток как есть. На мк каком - я вообще DMA заряжу, скажу "вгрузи от сих до сих" и забуду об этом, он мне скажет когда готово дернув IRQ а я пока чем-нибудь еще займусь. Это будет просто, круто и быстро. Я просто пульну фоновую операцию, и забуду о ней, потом железка дернет меня IRQ по transfer completion. Но вот с "функциями преобразований" это все уже - сами понимаете, вообще совсем не то. И если на десктопе с кучей ядер и гигагерц иногда катит и так, на мелочи где мегагерцев и памяти мало а поток данных может быть сравним с скоростью проца, потому что не факт что он высокочастотный, да и батарейки жрать не есть хорошо...

> делая всё на лету, в том числе в обработчиках прерываний на микроконтроллерах.

В DMA зарядить так то прикольнее. Почему-то. А обработчик так то только IRQ дернет. Кстати на десктопе в таком стиле тоже можно, если тредов себе завести, IO thread'ы смогут что-то наподобие. Там уже можно интеллект проявить, но опять же преобразования на высокой скорости не бесплатны по ресурсам.

> Потом бывают упакованные данные или значительные объёмы, которые на мелких контроллерах
> просто не влезут ни в какие буфера.

Я иногда балуюсь с DMA half-transfer IRQ: пока железка шлет/получает вон то я в софте жую новый субблок. Параллельно с этим. А что, двойная буферизация это круто.

> Но есть недостаток. Если писать на c++, или на Си, но именно
> gcc, то всё читаемо и хорошо. На на "обычном абстрактном Си"
> будет гадость, а не исходник.

Ну а вот привязываться навечно к 1 компилеру все же - ну так себе. Некрирые вещи из GCC явно стоило бы в стандарт загнать. Особенно case ... switch для диапазона, допустим. Стандартный код выглядит более криво чем с диапазонами в кейсе.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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