LINUX.ORG.RU

Сообщения Fat-Zer

 

web-камера sn9c102 возвращает ENOSPC

Форум — Linux-hardware

при попытке открыть девайс /dev/video1 выдаёт «No space left on device»

dmesg

[62303.923616] usb 2-1.6: SN9C10[12] PC Camera Controller detected (vid:pid 0x0C45:0x6007)
[62303.944925] usb 2-1.6: TAS5110D image sensor detected
[62303.947838] usb 2-1.6: Initialization succeeded
[62303.947863] usb 2-1.6: V4L2 device registered as video1
[62303.947864] usb 2-1.6: Optional device control through 'sysfs' interface disabled
[62303.947876] usbcore: registered new interface driver sn9c102
[62303.963478] usb 2-1.6: usb_submit_urb() failed, error -28
28, согластно include/asm-generic/errno-base.h, это так же ENOSPC.

в коде ошибка находится в drivers/media/video/sn9c102/sn9c102_core.c в sn9c102_start_transfer(). глубже спустится не осилил т.к. там какая-то usb-шная бабуйня...

гугл полнится подобными проблемами, но решения среди них я не нашёл... что-то говорили про то, что bandwidth слишком большой и конфликтует с другими устройствами, и про то, что надо уменьшить размер пакета, но о чём это и как именно - я хз... со внутренностями usb я не сталкивался...

lsusb

Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 010: ID 046d:c05b Logitech, Inc. M-U0004 810-001317 [B110 Optical USB Mouse]
Bus 001 Device 011: ID 03f0:3404 Hewlett-Packard DeskJet 6122
Bus 002 Device 009: ID 0c45:6007 Microdia VideoCAM Eye

lsusb -t

/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
        |__ Port 6: Dev 9, If 0, Class=Vendor Specific Class, Driver=sn9c102, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 1: Dev 10, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 3: Dev 11, If 0, Class=Printer, Driver=, 12M

идеи есть какие-нить?

 sn9c102, ,

Fat-Zer
()

Динамическая линковка и конфликт символов

Форум — Development

проблема: в двух библиотеках есть одинаковые символы. при линковке с обоими одного бинарника он использует символы только из одной из них. вот демонстрационный пример, если не понятно...

проблему можно решить загружая всё вручную через dlopen/dlsyn: https://gist.github.com/4067451 но тут две проблемы: 1. всё это очень тяжело, если символов туева хуча. 2. в плюсах символы сильно исковерканы.

собственно вопрос нумер раз: как это ещё можно сделать?

есть такая идея: перекинуть lib2_doer в отдельную либу и при её загрузке как-то указать, с какой библиотекой линковать именно её. но не знаю, возможно ли это в принципе...

отсюда вопрос нумер два: что почитать о том, как ld делает своё грязное дело? хотелось бы что-нить полегче исходников glibc...

Fat-Zer
()

иксы не обрабатывают события с кодами клавиш больше 255

Форум — General

предыстория: настраиваю пульт драйвер приёмника mceusb, протокол rc-6. всё подключил, из /dev/input/event4 события для него сыпятся, но в иксах согластно xev обрабатываются только некоторые. как показал эксперимент: только те, чьи скан коды <255 обрабатываются иксами. в хедерах ядра include/linux/input.h объявлено намного больше макросов, также они исправно сыпятся из интерфейса...

собственно вопрос: где почесать иксы, чтобы они обрабатывали события ото всех клавиш и возможно ли это?

 ,

Fat-Zer
()

как правильно узнать, что клиент отвалился?

Форум — Development
sockfd = accept(...);
// ...
while(1) {
    fd_set rd;
    // ...
    FD_SET(sockfd, &rd);
    // ...
    select(nfds, rd, 0, 0, 0);
    if(FD_ISSET(sockfd, &fd) {
        ssize_t rd_sz;
        rd_sz = recv(sockfd, buf, buf_sz, O_NONBLOCK)
        // ...
    }
}

если клиент закрывает соединение, то цикл начинает крутится без остановки — select сразу возвращает, что можно читать. recv возвращает 0

как идеологически правильно узнать, что клиент отвалился?

знаю о POLLRDHUP - но это только в linux'е и только с 2.6.17. ещё рассказали о хаке: можно написать в MSG_OOB если ошибка, то соединение крякнулось, но костыльно и в теории MSG_OOB может использоваться для чего-то полезного.

 , ,

Fat-Zer
()

Правильное завершение потока.

Форум — Development

Есть примерно такая структура:

void *thread1(void *d) {
  while(1) {
    char *buf=malloc(0x100);
    fgets(stdin, buf, 0x100);
    // какаие-то действия
    free(buf);
  }  
}

int main() {
  pthread_t t;
  pthread_create(&t, 0, thread1, 0);
  // какаие-то действия

}

т.е. отдельный поток читает из stdin'а/трубы/чего-то ещё... как его правильно остановить (с очисткой памяти итп) по асинхронному событию из главного потока? например получению сигнала... или придётся как-то правильно читать, чтобы чтение было неблокирующим?

 ,

Fat-Zer
()

Intel GMA 3150. Модуль не подцепляется на новом ядре (3.3.5).

Форум — Linux-hardware

dmesg; Xorg.0.log; lspci -k; config

Если дрова на видео вкомпилить в ядро, то ничего не меняется. Дело происходит на нетбуке Samsung NP-NC215-A01.

ЧЯДНТ?

 ,

Fat-Zer
()

Неожиданно встал винт

Форум — Linux-hardware

сабж, не отвечает ни на какие команды.

# dd if=/dev/sdc of=/dev/null
dd: чтение «/dev/sdc»: Ошибка ввода/вывода
0+0 записей считано
0+0 записей написано
 скопировано 0 байт (0 B), 0,0171012 c, 0,0 kB/c
в логах последним было это, потом куча однообразных ошибок.

сам диск: Seagate ST2000DL003

последнее, что делал - зеркалировал с него lvm-том. пока не перезагружался.

собственно что это? ошибка в ядре или диск умер? если второе, то почему?

 

Fat-Zer
()

замена kio-костылей на gvfs

Форум — Desktop

А ни кто не натыкался на конкретные идеи/треды/реализации замены кривых kde'шных kio-костылей на gvfs или каких-либо других, новых, но основанных на монтировании через fuse, а не на копировании файлов? у гугла это как-то сложно выспросить, а копать мегатонны kde'шных мейллистов - сизифов труд.

Интересно хотя бы почитать, что надумали те, кто уже рассуждали/обсуждали это.

Собственно тема прелюдия к треду «А давайте сделаем свой kio с блекджеком и шлюхами».

 , ,

Fat-Zer
()

Невесёлые мысли

Форум — Talks

Прочитал перепалку между Торвальдсом и Таненбаумом 20-ти летней давности. Поначалу получал много лулзов, но потом задумался, а не прав ли был последний, когда говорил, что монолитные ядра должны вымереть... Может мы пошли не тем путём? [Понимаю, что у истории нет сослогательного наклонения]

Если бы народ не оттянулся на создание нечта под названием «линукс», у нас была бы полноценная микроядерная ОС[читай хурд допилили]? И не было бы 1000 и одного костыля, называемого удавом и ежи с ним... Объективно говоря, микроядра ведь на порядок защищённее монолитных, а линукс остаётся стабильным только за счёт централизации. Всё, что за пределами ядра может в любой момент обрушить всю систему, при таком подходе любой проприетарный модуль страшно устанавливать... ИМХО поэтому их почти и нет(палка о двух концах), а разработчики видео прикладывают недюжинные усилия...

Fat-Zer
()

cmake trinity etc

Форум — General

в общем собака зарыта где-то в cmake'е. почему-то config.h, созданный оным, не подцепляется.

лог: http://paste.pocoo.org/show/475428/

идеи?

Fat-Zer
()

А куда вы монтириете свою файлопомойку?

Форум — Desktop

Собственно сабж...

Стало интересно кто-куда монтирует.

ИМХО в /home/папка_юзера не кашерно, ибо всякая лажа типа фильмов, музыки итп должны быть общими...

Я тоже, на мой взгляд, пользуюсь не самым лучшим, надуманным вариантом: /store

Fat-Zer
()

Нужна помощь с выбором панели

Форум — Desktop

И трёх лет не прошло, как я начал осознавать то, что пора слезать с kde3 на что-то современное. К гному у меня некоторая неприязнь, так что на него переходить не хочется. kde4 ИМХО просто не возможно использовать. В процессе поисков я пока пришёл к связке pcmanfm + openbox, кароче понравилось мне lxde. Однако lxpanel пользоваться неприятно по двум причинам: - Невозможно запустить второй сеанс для панели для второго монитора - нет кнопки скрытия панели (как в kicker'е)

Итак, уважаемые знатоки, вопрос: что выбрать на замену kicker'у, чтобы переход прошёл наименее болезненно?

Fat-Zer
()

RSS подписка на новые темы