LINUX.ORG.RU

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

Указатель на указатель на функцию

Форум — Development

Небольшой и, возможно, глупый вопрос по Си.

void f(void (**some_func)(void*)) {
    (*some_func)(some_func);
}
...
struct {
    void (*func_ptr)(void*);
    ...
} some_struct = { ... };
f((void (**)(void*))&some_struct);

Является ли приведённый выше код корректным?

По сути дела он базируется на двух предположениях:

1) Адрес первого поля структуры совпадает с адресом структуры. Пустые байты для выравнивания (если компилятор решил их добавить) всегда добавляются после поля, но не перед ним.

2) Указатель на указатель на функцию это самый обычный указатель на данные. Указатель на функцию сам по себе может быть особенным. Например, если речь идёт о гарвардской архитектуре, в которой код и данные имеют разные адресные пространства. Соответственно, указатель на функцию может быть чем-то принципиально иным, нежели указатель на данные (даже банально разрядности адресов в памяти программ и памяти данных могут быть разными). Но указатель на указатель на функцию это уже самое обычное число.

Верны ли эти предположения для всех архитектур, где имеет место быть Си?

 

KivApple
()

Своя подсветка синтаксиса в vim

Форум — General

Всем привет! Есть DSL, в котором комментарии начинаются с решётки (#). Еще в DSL можно писать функции, в которых комментарии начинаются в C/C++ стиле, и комментарии с решетки запрещены. Типа того:

...some code
# comments
proc myfunc @{
     # ошибка! это не комментарий
     // нормальный коммент
     /* еще один
      * нормальный коммент */
@}
...come code

Сейчас я обхожусь этим:

syn region binpacComment start="#" end="$"
syn region binpacComment start="//" end="$"
syn region binpacComment start="\/\*" end="\*\/"
hi def link binpacComment Comment

Но это приводит к тому, что во всем файле просто подсвечиваются как комментарии все три вида: #, //, /* */

А хочется, чтоб вне функций подсвечивалось только #, а в функциях только // и /* */.

Заранее спасибо за любую помощь или пример.

 , ,

Deleted
()

Парсер на BASH

Форум — General

Есть список url'в вида:

  • http(s)://domein.zone
  • http(s)://domein.zone/content
  • http(s)://subdomein.domein.zone
  • http(s)://subdomein.domein.zone/content

и иже с ними

Необходимо разделить на 2 списка:

  • кастрируентся все что до домена/субдомена и после зоны
  • урл целеком, но с префексом перед /content'ом (если таковой имеется)

 ,

pafflootiy
()

Raspberry Pi, MicroSD, dual boot

Форум — Desktop

Доброго дня.

Озадачился сделать для Raspberry Pi 3 карточку памяти с двумя системами, OpenELEC и RetroPie. Как вы понимаете, дёргать туда сюда карточки с разными системами глупо и неудобно. Карточку на это дело хочу отдать Samsung EVO MicroSD HC 16Gb, хранить на ней кроме систем планирую лишь копеечного размера rom'ы. Предварительно погуглив выяснил что есть NOOBS, хоть я толком до конца и не понял что это, но вроде именно он и обеспечивает мультизагрузочность.

Но есть нюанс, у меня из средств управления RPi3 есть только пульт от ТВ (HDMI-CEC, использую в OpenELEC), смартфон и планшет на андроиде (тоже в OpenELEC), и USB-геймпад Retrolink а-ля Sega Saturn (использую в RetroPie). Естественно, хочу обойтись чем-то из этого списка.

Поскольку большую часть времени использую OpenELEC - хотелось бы чтобы по умолчанию в течение 3 секунд после старта RPi3 грузилась бы именно OpenELEC, при этом если к USB подключен геймпад - чтобы грузилась RetroPie или чтобы геймпадом можно было выбрать систему.

Клавиатур, мышок и прочего дома нет (естественно на время настройки могу принести), да и использовать только как переключалку систем в NOOBS больно жирно.

 , , ,

s0n1k
()

Похоже, оформился вариант «народной видеокарты»

Форум — Linux-hardware

// Не для толксов, но обсуждения технических вопросов поддержки на линуксе и подбора лучшего железа для.

В Польше официальная цена (рекомендованная локальным представительством AMD, а значит по ней и будут продавать) на Radeon RX 480 8GB составляет — $229, с 4GB — $199 (зацените разницу всего в 30 бачей на вдвое больший объем памяти), а это означает, что таки ожидаемого недругами фейла в розничной продаже не произошло (предрекали, что несмотря на рекомендованные главным офисом AMD цены $249/$199, в рознице они будут завышены до ~$300/$250, но оказалось даже лучше, старшая видеокарта продается даже на $20 дешевле).

Как известно, RX 4** это GCN 1.3, т.е. имеет отличную изкоробчную поддержку AMDGPU/AMDGPU-PRO. Спека такова: шина 256 бит, видеорама GDDR5, 2304:144:64 [36 CU], 5.8 TFLOPs, пакет 150W.

Nvidia (я возможно ошибаюсь, поправьте меня если не так) даже рядом не сможет предложить что-то похожее. Тем более, мы говорим про два совершенно разных подходах к драйверам: AMD предлагает свободный AMDGPU + полу-проприетарный AMDGPU-PRO, а не блоб в случае Nvidia, который имеет известные проблемы в связи с обновлением иксов/ядра.

Продолжаем наблюдать.

Но лично я уже точно решил, что беру RX 480 8GB.

Да, там есть еще RX 470 и RX 460 с более холодными пакетами (110W и 75W), кому-то могут показаться интересными вариантами, но я считаю, что в соотношении спеки/цены именно Radeon RX 480 8GB — народная видеокарта, спорить здесь глупо, но вы попробуйте.

 , , ,

l-_-l
()

У вас работает amdgpu? Как вы собрали пакеты?

Форум — Linux-hardware
<Tl;dr>

если у вас полноценно работает amdgpu, покажите пожалуйста как у вас собраны libdrm, mesa и стоит ли помимо x11-drivers/xf86-video-amdgpu — x11-drivers/xf86-video-ati?

</Tl;dr>

Купил тут камень AMD A10-7870K с R7 Sea Islands GCN 1.1, получается, что согласно вики могу использовать amdgpu, а не radeon.

Ядро 4.5.0 собрал так:

# CONFIG_DRM_RADEON is not set
CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_CIK=y
# CONFIG_DRM_AMDGPU_USERPTR is not set
# CONFIG_DRM_AMD_POWERPLAY is not set
# CONFIG_FB_RADEON is not set
CONFIG_FB_EFI=y
Отлично, консоль вижу, драйвер работает:
00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Kaveri [Radeon R7 Graphics] (rev d4)
	Subsystem: Gigabyte Technology Co., Ltd Kaveri [Radeon R7 Graphics]
	Kernel driver in use: amdgpu
	Kernel modules: amdgpu
[    1.640325] [drm] amdgpu kernel modesetting enabled.
[    1.641092] fb: switching to amdgpudrmfb from EFI VGA
[    1.642479] [drm] amdgpu: 1024M of VRAM memory ready
[    1.642480] [drm] amdgpu: 1024M of GTT memory ready.
[    1.645798] [drm] amdgpu: irq initialized.
[    1.645807] [drm] amdgpu: dpm initialized
[    2.004054] fbcon: amdgpudrmfb (fb0) is primary device
[    2.239250] amdgpu 0000:00:01.0: fb0: amdgpudrmfb frame buffer device
[    2.294602] [drm] Initialized amdgpu 3.1.0 20150101 for 0000:00:01.0 on minor 0
согласно вики в make.conf стоит:
VIDEO_CARDS="amdgpu radeonsi"
начинаем собирать иксы и кишки, для картинки в мониторе нам нужны:

  • x11-base/xorg-server
  • x11-base/xorg-drivers
  • x11-drivers/xf86-video-amdgpu
  • media-libs/mesa
  • x11-libs/libdrm

Всё хорошо! Но чертило портаж начинает тянуть x11-drivers/xf86-video-ati, потому что его требует mesa, если libdrm собирается с юзом radeonsi! С xf86-video-ati или без него (удалив после установки) — система полностью зависает при старте иксов (в 2016 году, лолекс), только ребут., нет не полностью! Только иксы зависают, это у меня acpid не был установлен для ребута по кнопке, вот лог иксов, что происходит с ними когда зависают: https://bpaste.net/show/b46bb4ff5b81

Картинку можно получить только пересобрав mesa и libdrm вот так:

[I] x11-libs/libdrm
     Available versions:  2.4.59^t 2.4.65^t (~)2.4.66^t (~)2.4.67^t **9999^t {libkms static-libs valgrind ABI_MIPS="n32 n64 o32" ABI_PPC="32 64" ABI_S390="32 64" ABI_X86="32 64 x32" VIDEO_CARDS="amdgpu exynos freedreno intel nouveau omap radeon tegra vmware"}
     Installed versions:  2.4.67^t(02:57:21 PM 03/20/2016)(libkms -static-libs -valgrind ABI_MIPS="-n32 -n64 -o32" ABI_PPC="-32 -64" ABI_S390="-32 -64" ABI_X86="32 64 -x32" VIDEO_CARDS="amdgpu -exynos -freedreno -intel -nouveau -omap -radeon -tegra -vmware")
[I] media-libs/mesa
     Available versions:  [M]7.10.3 10.3.7-r1^d 11.0.6^d (~)11.0.8^d (~)11.0.9^d (~)11.1.2-r1^d **9999^d {bindist +classic d3d9 debug +dri3 +egl +gallium +gbm gles gles1 gles2 hardened (+)llvm motif +nptl opencl openmax openvg osmesa pax_kernel pic selinux +udev vaapi vdpau wayland xa xvmc ABI_MIPS="n32 n64 o32" ABI_PPC="32 64" ABI_S390="32 64" ABI_X86="32 64 x32" KERNEL="FreeBSD linux" VIDEO_CARDS="freedreno i915 i965 ilo intel mach64 mga nouveau r100 r128 r200 r300 r600 radeon radeonsi savage sis tdfx via vmware"}
     Installed versions:  11.1.2-r1^d(03:08:20 PM 03/20/2016)(classic dri3 egl gallium gbm gles1 gles2 llvm nptl udev vaapi vdpau xa xvmc -bindist -d3d9 -debug -opencl -openmax -osmesa -pax_kernel -pic -selinux -wayland ABI_MIPS="-n32 -n64 -o32" ABI_PPC="-32 -64" ABI_S390="-32 -64" ABI_X86="32 64 -x32" KERNEL="-FreeBSD" VIDEO_CARDS="-freedreno -i915 -i965 -ilo -intel -nouveau -r100 -r200 -r300 -r600 -radeon -radeonsi -vmware")
т.е. без radeonsi, иксы стартуют, всё работает, но нет ускорения, т.е. дерганное всё, а на выхлопах в консоли и иксовом логе, говорит, что не может найти radeonsi, поэтому вопрос:

если вы на amdgpu, покажите пожалуйста как у вас собраны libdrm, mesa и установлен ли помимо x11-drivers/xf86-video-amdgpu — x11-drivers/xf86-video-ati?

 , , , ,

kep
()

Bluetooth кнопка

Форум — Linux-hardware

Отцы, помогите советом!

Дано: блютус кнопка (которая для селфи и прочей фигни) к компу подключается, нажатия (enter и VolUp) видны. Хочется переназначить ее кнопки на Next и Prior например, но в списке xinput она видна как slave pointer, соответственно setxkbmap и xkbcomp ее в упор не видят, а xmodmap переназначает, но на всех устройствах сразу, что логично.

Как объяснить иксам что это клавиатура а не мышка? Ну или как переназначить кнопки другим способом?

Кусок лога Х: http://pastebin.com/944Lvndf

Вывод xinput: http://pastebin.com/n6dSuawx

 ,

nipper
()

Тайлинг моей мечты

Форум — Talks

В последнее время занимался немного оптимизацией управления окнами в awesome, и теперь получившейся хренью сил нет охота поделиться. Из интересного есть специальный графически оформленный (да, нужен compton) режим для манипуляции окнами, собственная «полуручная» схема тайлинга, нескучные заголовки с табами.

Видео чтобы не описывать: раз, два.

Конфиги можно потыкать палочкой все там же. Отзывы и мнения приветствуются.

 

Worron
()