LINUX.ORG.RU

Избранные сообщения maksspaces

Ryzen 9 3900x или ryzen 7 3700x

Форум — General

Собираю комп) Уже неделю не могу определиться что купить. B550 чипсет. Я программист (фулстек) и сами понимаете: куча ide, контейнеры, браузер с консолью, бекенд и фронт пересобираются локально, месенджеры и тд. Хочу что бы все летало, надоел macbook pro. Хочу спросить - нужен ли мне ryzen 9? Или это оверкил

 ,

maksspaces
()

Чудеса Macbook pro 2017

Форум — Linux-hardware

Всем привет) У кого есть макбук про 2017 - у меня странная фигня началась после того как я пытался поставить на мак драйвера для внешней wifi: иногда фиви карточка просто пропадает из системы, будто у меня нет такого устройства внутри, а потом если перезагрузить то происходит магия и она начинает работать как ни в чем не бывало. Как бороться с такой магией, и в чем может быть проблема?

 

maksspaces
()

Как определить wifireless.wifi-device.path в OpenWRT, автоматически?

Форум — Linux-hardware

Всем привет)

Я собираю прошивку с кастомным /etc/config/wireless

config wifi-device 'radio0'
	option type 'mac80211'
	option channel '11'
	option hwmode '11g'
	option htmode 'HT20'
	option txpower '19'
	option country 'RU'
	option path 'platform/qca953x_wmac'
	option disabled '0'

config wifi-iface 'private_wifi'
	option device 'radio0'
	option mode 'ap'
	option encryption 'psk2'
	option network 'stuff'
	option disabled '0'
	option key '123456789'
	option ssid 'private-wifi'

config wifi-iface 'public_wifi'
	option device 'radio0'
	option mode 'ap'
	option encryption 'none'
	option network 'lan'
	option ssid 'public-wifi'

под роутеры tlwr841n/nd версий 7,8,9,10.

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

Как можно определить имя девайса автоматически? Я знаю что система сама создает еще один wifi-device с правельным путем к wifi девайсу, в случае ошибки. Но как она это делает? Куда идти и куда смотреть по этому поводу?

 , ,

maksspaces
()

Двусвязные списки в СИ

Форум — Development

Всем привет)

Написал пробник двусвязного списка -> https://github.com/maksspace/mylist/tree/master

Прошу совет: можно ли использовать подобное в реальном проекте? или лучше стандартный вид когда есть дескриптор списка и ноды и т.п?

 ,

maksspaces
()

Получение адреса структуры по адресу ее поля

Форум — Development

Кто-нибудь, подскажите почему адреса не равны?

struct something {
    int  foo;
    char ch;
    int  bar;
};

int main(void)
{
    struct something st;
    printf("       st addr: %lx\n", &st);
    printf("st addr by foo: %lx\n", (size_t)&st.foo - (size_t)&(((struct something*)0)->foo));
    printf("st addr by foo: %lx\n", &st.foo - &(((struct something*)0)->foo));
    return 0;
}

Выхлоп:

st addr: 7fff5fbff7e0
st addr by foo: 7fff5fbff7e0
st addr by foo: 1fffd7effdf8

 ,

maksspaces
()

Односвязные списки в Си

Форум — Development

Всем привет) Давеча на меня наехал препод по программированию, мол: «почему ты никогда не используешь код который даю я, а все время пишешь свое. Лучше меня ты не напишешь.» В аудитории я промолчал.

Давал он код библиотеки для работы с односвязными списками. Я его полистал и понял что это говно.

Вот оно -> https://github.com/maksspace/unn/tree/master/prepod

Моя критика:

  1. Большинство функции не нужны ибо поля структур открыты
  2. Бессмысленное зануление указателя и проверка на ноль почти в каждой функции
  3. Поле данных в нодах списка, это не void*, а просто структура, по этому придется каждый раз исправлять библиотеку чтобы работать в другими типами данных
  4. Нет возможности использовать кастомный аллокатор памяти

Вот мой вариант: https://github.com/maksspace/slistlib

Дайте критику по обоим вариантам)

 ,

maksspaces
()

Виртуальная память; карта памяти процесса; работа malloc()

Форум — Development

Привет всем) Не могу никак разобраться с тем как происходит работа с памятью и как выглядит карта памяти процесса. Пока у меня такое представление: Процесс видит всю память которая есть в системе, пусть для примера 4гб, первый гиг резервируется ядром и никогда не будет доступен пользовательским процессам. Остальные 3 гб -> пространство которе процесс видит, но не обязательно может использовать. Когда программа загружается в память то разные ее части загружаются в разные сегменты(диапазоны адресов): стек который начинается сразу после пространства ядра и растет в сторону больших адресов пока не упрется в какой то лимит, сегмент куда отображаются файлы, куча, не инициализированные переменные, данные, и код.

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

У меня такой вопрос: как работает malloc()? ясно что он выделяет память в куче. Но если минимально сколько можно выделить вирт памяти это одна страничка, то что тогда именно делает malloc и вообще функции выделения динамической памяти?? Из чего складывается размер который программа занимает в памяти? Как расчитывается изначальный размер сегментов?

И самое главное: как посмотреть, как это работает на самом деле? То есть в самых мелких подробностях. Ну когда например Тодвальтс начинал писать ядро, он же знал что делать? Как начать и как организовать работу ядра? Подскажите пожалуйста с чего начать изучение всего этого)

 , , ,

maksspaces
()