LINUX.ORG.RU

Статьи - Архив 2026, Сентябрь

Simplerpc (libsrpc): Модель владения памятью

 , , ,

В предыдущей статье Simplerpc: Простой RPC на Си для Linux-приложений было краткое знакомство с framework-ом, в этой подробнее описана используемая в нём модель владения разделяемой памятью.

При использовании несколькими приложениями аллокатора из общего пула разделяемой памяти возникает несколько задач, которые можно по-разному решать. Пул отображается во все процессы по одному и тому же виртуальному адресу, поэтому указатель, полученный в одном процессе, остаётся валидным в другом, и данные между процессами можно передавать вообще без копирования. Обратная сторона такого удобства в том, что любой из процессов может в любой момент «умереть» — по exit(), SIGKILL или segfault — и оставить после себя либо недоделанную операцию с аллокатором, либо выделенные блоки, которые больше никому не нужны.

( читать дальше... )

dsn76
()

Восстановление работы LTE-модема Quectel EM120R-GL после выхода из гибернации

 , , ,

Была проблема: после гибернации ноутбука (Lenovo X1 Yoga Gen 6), не запускался модем (Quectel EM120R-GL). Точнее, не происходил FCC-unlock модема.

Потратил кучу времени + нервов.

Удалось решить проблему через rfkill:

rfkill block wwan
    sleep 2
rfkill unblock wwan
    sleep 10
systemctl restart ModemManager

(Засунул скрипт на основе этих команд в /usr/lib/systemd/system-sleep/)

Благодарю нейронку (DeepSeek) за поиск решения.

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

Окружение:

  • Дистрибутив: Debian 13 (trixie)
  • Ядро: 7.1.8+deb13-amd64 (backports)
  • ModemManager: 1.24
  • libmbim: 1.32
  • libqmi: 1.36
  • Ноутбук: Lenovo ThinkPad X1 Yoga Gen 6
  • Модем: Quectel EM120R-GL, PCI 1eac:1001, Subsystem 1eac:2001

На всякий случай запишу действия, которые не помогли:

  • mbimcli –quectel-set-radio-state=on (с –device-open-proxy и без). Команда принимается (Status = 0), но SwRadioState остаётся 0;
  • Перезагрузка модуля mhi_pci_generic;
  • PCIe reset через sysfs (echo 1 > …/reset);
  • Удаление + rescan устройства (remove + rescan);
  • Симлинк FCC-unlock в /etc/ModemManager/fcc-unlock.d/. MM 1.18+ не вызывает эти скрипты автоматически;
  • lenovo-fccunlock из репозитория Ubuntu. Получаю «DPR_Fcc_unlock_service - error: couldn’t find modem»;
  • Сборка fcc-unlock.c + mbim2sar.so. FCC unlock completed successfully, но состояние не меняется.
Harliff
()

Simplerpc: Простой RPC на Си для Linux-приложений

 , ,

Есть классическая проблема: изолированные процессы — хорошо для надёжности, но хочется иногда позвать функцию из соседа, как будто она лежала в той же библиотеке. Стандартные IPC — это всегда протокол: описал интерфейс, сгенерировал стабы, поднял сервер, прописал адреса. simplerpc предлагает путь короче: ты пишешь обычную функцию на Си, линкуешь библиотеку — и она автоматически становится RPC-методом, доступным другим процессам на той же машине.

( читать дальше... )

dsn76
()

Отступы или скобочки? - Да!

 , , , ,

Конвертер синтаксиса, который заканчивает главный холивар

«Может, в следующий раз вы посмотрите дважды - и не станете судить о книге по обложке» - Зекора

Спор «скобочки или отступы» старше, чем некоторые из его участников. У этого спора нет судьи и нет призового фонда, но есть ветераны и есть потерянные души, которые однажды написали end в Питоне и с тех пор не могут остановиться. Выиграть этот спор невозможно: стороны спорят о вкусах, а не о свойствах. Поэтому предлагаю - давайте закончим этот спор не победой, а разоружением.

( читать дальше... )

wirewalk
()