[Решено]Список процессов и информация о видеокарте.
Модератор: Модераторы разделов
-
wolkolak
- Сообщения: 49
- ОС: ArchLinux 64
[Решено]Список процессов и информация о видеокарте.
Необходимо получить список процессов, вроде как используют структуру task_struct(или task_t), но описания ее нет (ядро 3.2) видимо, что-то другое придумали. Через /proc не радует все это делать.
И еще, необходимо получить информацию о видеокарте(производитель, объем и т.д) через файл устройства. Как понял, открываю файл - получаю дескриптор, а что дальше делать не знаю, Что -то через ioctl()? Вообщем тьма. (карточка Intel 945).
И еще, необходимо получить информацию о видеокарте(производитель, объем и т.д) через файл устройства. Как понял, открываю файл - получаю дескриптор, а что дальше делать не знаю, Что -то через ioctl()? Вообщем тьма. (карточка Intel 945).
-
Gloomy
- Сообщения: 340
- Статус: сочувствующий
Re: [Решено]Список процессов и информация о видеокарте.
Да куда б она делась-то, вот же объявление
Не всякий драйвер не всякой карты создаёт файлы устройств в /dev. Тут скорее надо шарить по /sys и надеяться, что ядро имеет желание и возможность поделиться с user-space'ом информацией об устройстве.
-
wolkolak
- Сообщения: 49
- ОС: ArchLinux 64
Re: [Решено]Список процессов и информация о видеокарте.
По какой причине в моем файле sched.h отсутствует описание структуры?
/dev/video0 наверное моя видеокарта. Про /sys можно по подробнее?
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: [Решено]Список процессов и информация о видеокарте.
после скачивания исходников с kernel.org таблетку запускали?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
Gloomy
- Сообщения: 340
- Статус: сочувствующий
Re: [Решено]Список процессов и информация о видеокарте.
Потому что заголовки ядра не полные?
Да, скорее всего. Однако, к примеру, моя видеокарта себя обозначает как сразу два девайса: /dev/nvidia0 и /dev/nvidiactl. А вот встроенное видео в нетбуке ничем в /dev себя не выдаёт. Вообще, именование устройств в /dev возлагается на udev (или его аналог) - пользователь волен настраивать всё как вздумается: хочешь - прячь USB-модем, маскируя его под раздел винта; хочешь - назови видеокарту /dev/moja_vidjahua_ge_force_plus_100500_gts_ultra_power.
Конечно: ич, ни, сан. В двух словах: sysfs это представление внутренних объектов ядра в виде виртуальной файловой системы. От /proc отличается тем, что /proc управляет процессами, а /sys - устройствами (ещё раз восхвалим авторов UNIX за столь изящное гениальное решение).
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: [Решено]Список процессов и информация о видеокарте.
точнее, авторов plan9·
кстати, procfs — из той же оперы…
это я так, к слову·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
wolkolak
- Сообщения: 49
- ОС: ArchLinux 64
Re: [Решено]Список процессов и информация о видеокарте.
Если через /sys,то получу драйвер, шину и т.д. Но как получить вендора, модель и сколько памяти на карточке? Каким образом работает lspci? Возможно ли вообще узнать информацию непосредственно через обращение к файлу устройства (или драйвера, я уже не знаю чего там еще)?
-
deadhead
- Сообщения: 1913
- Статус: zzz..z
Re: [Решено]Список процессов и информация о видеокарте.
требуйте долива после отстоя пены! ;-)
контекст употребления
#include <sched.h>
и
#include <linux/sched.h>
как бы разнится ;-)
use the source, Luke!
[x] close
-
Gloomy
- Сообщения: 340
- Статус: сочувствующий
Re: [Решено]Список процессов и информация о видеокарте.
Элементарно - он тупо обходит дерево /sys. Чтобы в этом убедиться, достаточно закинуть проект в Eclipse (или другую IDE), включить отладку, собрать и пройтись отладчиком.
lspci это делает опять же примитивно: есть гигантский хидер, в который собраны классы всех известных человечеству устройств, и есть не менее гигантский список вендоров, моделей и ревизий железа.
А это уже не так тривиально. Xorg правильно показывает количество памяти: [15.490] (--) NVIDIA(0): Memory: 1048576 kBytes. Однако не уверен, что это работает на любых видеокартах. Надо поковырять Xorg, откуда он вообще извлекает это число. Подозреваю, что им делится драйвер.
Зависит от драйвера - как уж его разработчик сделал, так и будет. У той же nvidia драйвер даёт полное управление, в т.ч. всякий там разгон и т.д.
И вообще, какова задача - программно получить объём видеопамяти какой-то одной конкретной карты или создать универсальный инструмент, который будет работать с любой картой?
-
wolkolak
- Сообщения: 49
- ОС: ArchLinux 64
Re: [Решено]Список процессов и информация о видеокарте.
Вообщем, если я правильно нарыл, вся требуемая мне информация храниться в самом файле устройства (в /dev/video0), А с помощью /sys я смогу точно определить этот файл устройств. Файл устройства - символьный, вся информация закодирована в байтах. Надо нарыть, как это все раскодировать.
-
watashiwa_daredeska
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: [Решено]Список процессов и информация о видеокарте.
1. не совсем те же·
2. в unix-е не было ни procfs, ни sysfs, ни других интересных нововведений, реализованых именно в plan9; поэтому, даже если смешать разработчиков unix и plan9 в одну кучу, всё равно фраза "спасибо разработчикам _unix_ за идею файлсерверов, которую они реализовали в _plan9_" — звучит, скажем так, довольно странно·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
watashiwa_daredeska
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: [Решено]Список процессов и информация о видеокарте.
Скажем так, основные лица всё те же. С поправкой на прошедшее время, изменение служебного положения и т.п.
Естественно, состав "Computing Science Research Center at Bell Labs" немножко изменился за 20 лет.Plan 9 from Bell Labs was originally developed by members of the Computing Science Research Center at Bell Labs, the same group that originally developed UNIX and C.
Plan9 is more UNIX than the UNIXes themselves. Считай, что Plan9 — это Unix 2.0. Тяжело с первого раза реализовать все идеи так, чтобы абстракции не начали протекать через 10–20 лет. Вот через 20 лет и появился Plan9, который вернул к жизни принцип "everything is file", который декларировался еще в UNIX, но довольно быстро перестал там работать. Все эти файлсерверы и пр. — всего лишь инструменты, которые позволяют нормально реализовать этот основополагающий принцип.
Идея "everything is file" была сформулирована еще разработчиками UNIX, и даже в какой-то форме реализована. Plan9 лишь адаптировал реализацию под изменившиеся реалии жизни, чтобы этот принцип продолжал работать, ибо в самом UNIX он уже перестал.
Мои розовые очки
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: [Решено]Список процессов и информация о видеокарте.
watashiwa_darede...
ты всё очень верно говоришь, но файлсерверы вообще и procfs/sysfs в частности, были реализованы не в unix, а в plan9·
и plan9 отстоит от unix (в данном контектсе) так же далеко, как unix, например, от leo i 'lyons electronic office·
а то и гораздо дальше·
ты всё очень верно говоришь, но файлсерверы вообще и procfs/sysfs в частности, были реализованы не в unix, а в plan9·
и plan9 отстоит от unix (в данном контектсе) так же далеко, как unix, например, от leo i 'lyons electronic office·
а то и гораздо дальше·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
DaemonTux
- Сообщения: 1480
- Статус: Юный падаван
- ОС: Gentoo
Re: [Решено]Список процессов и информация о видеокарте.
С чего вы решили что /dev/video0 это видео карта. У меня этот файл от веб камеры. Также он может быть от тв тюнера.
Vladivostok Linux User Group
-
wolkolak
- Сообщения: 49
- ОС: ArchLinux 64
Re: [Решено]Список процессов и информация о видеокарте.
Да, действительно вчера вечером еще это обнаружил. Остается только fb0 или всетаки через /sys. Вот вывод информации о нем через udevadm. Есть вывод информации о видеокарте ('/devices/pci0000:00/0000:00:02.0':), правда без объема памяти.
Код: Выделить всё
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/pci0000:00/0000:00:02.0/graphics/fb0':
KERNEL=="fb0"
SUBSYSTEM=="graphics"
DRIVER==""
ATTR{bits_per_pixel}=="32"
ATTR{blank}==""
ATTR{console}==""
ATTR{cursor}==""
ATTR{mode}==""
ATTR{modes}=="U:1024x600p-0"
ATTR{pan}=="0,0"
ATTR{virtual_size}=="1024,600"
ATTR{name}=="inteldrmfb"
ATTR{stride}=="4096"
ATTR{rotate}=="0"
ATTR{state}=="0"
looking at parent device '/devices/pci0000:00/0000:00:02.0':
KERNELS=="0000:00:02.0"
SUBSYSTEMS=="pci"
DRIVERS=="i915"
ATTRS{vendor}=="0x8086"
ATTRS{device}=="0xa011"
ATTRS{subsystem_vendor}=="0x144d"
ATTRS{subsystem_device}=="0xc0a8"
ATTRS{class}=="0x030000"
ATTRS{irq}=="46"
ATTRS{local_cpus}=="00000000,0000000f"
ATTRS{local_cpulist}=="0-3"
ATTRS{numa_node}=="-1"
ATTRS{dma_mask_bits}=="36"
ATTRS{consistent_dma_mask_bits}=="36"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""
ATTRS{boot_vga}=="1"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""Вопрос остается открытым, каким образом получить информацию о видеокарте средствами языка си?
-
DaemonTux
- Сообщения: 1480
- Статус: Юный падаван
- ОС: Gentoo
Re: [Решено]Список процессов и информация о видеокарте.
Драйвера для фреймбуфера и иксов могут быть разные
ну и брать инфу из /sys самое правильное решение. /sys предназначен для выдачи инфы про все железо
Vladivostok Linux User Group
-
Gloomy
- Сообщения: 340
- Статус: сочувствующий
-
wolkolak
- Сообщения: 49
- ОС: ArchLinux 64
-
wolkolak
- Сообщения: 49
- ОС: ArchLinux 64
Re: [Решено]Список процессов и информация о видеокарте.
Остался вопрос с хидерами. linux-headers установил, интересующие меня хидеры находятся в /usr/src/linux-3.2.../include/
как сделать так что бы это все работало через /usr/include. Ссылку не создает, жалуется, что есть такой файл. Тупое копирование на крайнии случай.
как сделать так что бы это все работало через /usr/include. Ссылку не создает, жалуется, что есть такой файл. Тупое копирование на крайнии случай.
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: [Решено]Список процессов и информация о видеокарте.
$ man -P 'less -rp "-I dir"' gcc
QUOTE писал(а):-I dir
Add the directory dir to the list of directories to be searched for header files.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
wolkolak
- Сообщения: 49
- ОС: ArchLinux 64
Re: [Решено]Список процессов и информация о видеокарте.
Теперь вот что.
linux/sched.h
sys.c
linux/sched.h
Код: Выделить всё
...
#define for_each_process(p) \
for (p = &init_task ; (p = next_task(p)) != &init_task ; )
...sys.c
Код: Выделить всё
#include <stdio.h>
#include <linux/sched.h>
...
void main(void){
...
struct task_struct *task;
for_each_process(task){
printf("%s %d",task->comm,task->pid);
}
...
}Код: Выделить всё
$ gcc -I /usr/src/linux-3.2.8-1-ARCH/include sys.c
sys.c: В функции «main»:
sys.c:64:23: ошибка: expected «;» before «{» token-
deadhead
- Сообщения: 1913
- Статус: zzz..z
-
wolkolak
- Сообщения: 49
- ОС: ArchLinux 64
-
deadhead
- Сообщения: 1913
- Статус: zzz..z
Re: [Решено]Список процессов и информация о видеокарте.
Код: Выделить всё
$ grep -n __KERNEL__ include/linux/sched.h
44:#ifdef __KERNEL__
2558:#endif /* __KERNEL__ */все что находится под дефайном (а это почти весь фаил!) используется лишь в контексте, как тут принято говорить, "программы linux"...
P.S.
#define __KERNEL__
Вас не спасет, пожалейте свое (и не только) время ;-)
[x] close
-
Janik
- Сообщения: 864
- Статус: Оператор вычислительных машин
- ОС: Debian
Re: [Решено]Список процессов и информация о видеокарте.
А если через OpenGL?
Кто ищет, тот всегда найдет!
Опыт - это когда все получается с первого раза.
Опыт - это когда все получается с первого раза.
-
Gloomy
- Сообщения: 340
- Статус: сочувствующий
Re: [Решено]Список процессов и информация о видеокарте.
Тогда всё плохо. Поковырял на досуге несколько драйверов и модулей Xorg - нет у них общего интерфейса, получающего информацию о карте. Всё в разнобой, кто в лес, кто по дрова
Не следует путать user-space и kernel-space. Всё, что доступно под макросом __KERNEL__, доступно только из ядра и только в том случае, если это либо его неотъемлемая часть, либо подгружаемый внешний модуль. В user-space, подключив хидер ядра к "Hello, World!", ничего, кроме ошибок компиляции, не получится. Равно как в kernel-space нельзя вызвать что-то вроде "printf("Hello, World!\n");" - это функция user-space.
Увы, не все видеокарты поддерживают OpenGL аппаратно
-
Janik
- Сообщения: 864
- Статус: Оператор вычислительных машин
- ОС: Debian
Re: [Решено]Список процессов и информация о видеокарте.
Например, какие? Voodoo?
Кто ищет, тот всегда найдет!
Опыт - это когда все получается с первого раза.
Опыт - это когда все получается с первого раза.
-
Gloomy
- Сообщения: 340
- Статус: сочувствующий
-
wolkolak
- Сообщения: 49
- ОС: ArchLinux 64
Re: [Решено]Список процессов и информация о видеокарте.
Всем спасибо. Сделал через /sysfs и /proc, В тупую просматривая директории и читая файлы. Так и не понял откуда Xorg и др. берут объем видеокарты, но это мелочи.