графическая консоль

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-16 14:10:33

paradox писал(а):убать их как модули
и сделать как системные
угу
а разве нельзя использовать (DECLARE|DEV|DRIVER)_MODULE вместе с SYSINIT. Если я не ошибаюсь, то sound(4) и drm(4) так и делают.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 14:12:30

не улавливаю какой смысл делать MODULE
если то что нужно уже будет в ядре после SYSINIT

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-16 14:16:50

paradox писал(а):если то что нужно уже будет в ядре после SYSINIT
будет только если одна из опций зависящих от x86bios (atkbd, dpms, vesa, vga) или сам x86bios будет указан в конфиге. Если хочешь всегда, то нужно поставить в sys/conf/files не optional, а standard.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 14:25:21

нет не всегда
только если собираеться модуль который его требует
apm.c
например тоже будет требовать

но в целом и общем
x86bios в ядре на этапе SYSINIT мне нужен токо для vga.c и vesa.c

в остальных моментах
как модуль он устраивает

но делать и так и сяк
даже незнаю
думаю если оставить просто SYSINIT то меньше мороки будет

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35267
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Alex Keda » 2009-09-16 14:28:48

у меня на них люди работают =)))
лучше скажи что делать, завтра сделаю - когда до видях тех доберусь
Убей их всех! Бог потом рассортирует...

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 14:30:24

а какая там архитектура? i386 ?
бсд какая версия?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35267
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Alex Keda » 2009-09-16 14:54:23

i386
версию любую накачу - это бездисковые рабочие станции =)
разве что мне придётся гулять с хардом и бутиться на каждой =)))
тока заранее скажи, чтобы собрал эту самую версию....
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-16 14:55:48

paradox, пока сделал так
http://pastebin.ca/1568182
можно, наверное, добавить что-то вроде такого

Код: Выделить всё

static int
x86bios_modevent(module_t mod __unused, int type, void *data __unused)
{
	int err = 0;

	switch (type) {
	case MOD_LOAD:
		x86bios_sysinit();
		break;
	case MOD_UNLOAD:
		x86bios_sysuninit();
		break;
	default:
		err = ENOTSUP;
		break;
	}

	return (err);
}

static moduledata_t x86bios_mod = {
	"x86bios",
	x86bios_modevent,
	NULL,
};

DECLARE_MODULE(x86bios, x86bios_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
MODULE_VERSION(x86bios, 1);

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 15:00:57

x86bios_sysuninit(void *arg __unused)

там мютекс дестрой а не lock

x86bios_sysinit();
можно
токо
x86bios_sysinit(NULL);
итд

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 15:03:26

lissyara писал(а):i386
версию любую накачу - это бездисковые рабочие станции =)
разве что мне придётся гулять с хардом и бутиться на каждой =)))
тока заранее скажи, чтобы собрал эту самую версию....
а на какой версии они щас бутяться?
если i386 мне подойдет любая от бсд4 до бсд8
токо ядро с options SC_PIXEL_MODE собери
а модули можно будет там загрузить?
или оно токо ядро тягает?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35267
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Alex Keda » 2009-09-16 15:03:46

вот список видях:

Код: Выделить всё

vgapci0@pci0:1:0:0:	class=0x030000 card=0x40001458 chip=0x85001023 rev=0x6a hdr=0x00
    vendor     = 'Trident Microsystems'
    device     = 'Cyber CyberBlade i1 AGP (51)'
    class      = display
    subclass   = VGA

Код: Выделить всё

vgapci0@pci0:1:0:0:	class=0x030000 card=0x31221106 chip=0x31221106 rev=0x03 hdr=0x00
    vendor     = 'VIA Technologies Inc'
    device     = 'VT8623 Apollo CLE266 CastleRock AGP 8X Controller'
    class      = display
    subclass   = VGA

Код: Выделить всё

vgapci0@pci0:1:0:0:	class=0x030000 card=0x00000000 chip=0x002c10de rev=0x15 hdr=0x00
    vendor     = 'Nvidia Corp'
    device     = 'VANTA / VANTA LT [NVVANTA]'
    class      = display
    subclass   = VGA

Код: Выделить всё

vgapci0@pci0:1:0:0:	class=0x030000 card=0x403d1043 chip=0x011010de rev=0xb2 hdr=0x00
    vendor     = 'Nvidia Corp'
    device     = 'NV11 GeForce2 MX / MX 400'
    class      = display
    subclass   = VGA

Код: Выделить всё

vgapci0@pci0:1:0:0:	class=0x030000 card=0x89045333 chip=0x89045333 rev=0x01 hdr=0x00
    vendor     = 'S3 Graphics Co., Ltd'
    device     = '86C365 Trio3D QFP, 86C366 Trio3D BGA'
    class      = display
    subclass   = VGA

Код: Выделить всё

vgapci0@pci0:0:2:0:	class=0x030000 card=0x11328086 chip=0x11328086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '82815/EM/EP/P 815/EM/EP/P (Solano) Interal GUI Accelerator'
    class      = display
    subclass   = VGA

Код: Выделить всё

vgapci0@pci0:1:0:0:	class=0x030000 card=0x8a135333 chip=0x8a135333 rev=0x02 hdr=0x00
    vendor     = 'S3 Graphics Co., Ltd'
    device     = '86C368 Trio3D2x & Trio3D2x+ AGP / Trio3D2x & Trio3D2x+ 8MB'
    class      = display
    subclass   = VGA

Код: Выделить всё

vgapci0@pci0:1:0:0:	class=0x030000 card=0x00081002 chip=0x474d1002 rev=0x65 hdr=0x00
    vendor     = 'ATI Technologies Inc'
    device     = 'Rage XL AGP 2x SLAT'
    class      = display
    subclass   = VGA

Код: Выделить всё

vgapci0@pci0:0:1:0:	class=0x030000 card=0x00000000 chip=0x71218086 rev=0x03 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '82810 810 Chipset Graphics Controller'
    class      = display
    subclass   = VGA

Код: Выделить всё

vgapci0@pci0:1:0:0:	class=0x030000 card=0x00000000 chip=0x011110de rev=0xb2 hdr=0x00
    vendor     = 'Nvidia Corp'
    device     = 'NV11DDR GeForce2 MX 100/200  (DDR)'
    class      = display
    subclass   = VGA

Код: Выделить всё

vgapci0@pci0:0:12:0:	class=0x030000 card=0x8a015333 chip=0x8a015333 rev=0x01 hdr=0x00
    vendor     = 'S3 Graphics Co., Ltd'
    device     = '86C375 ViRGE/DX, 86C385 ViRGE/GX'
    class      = display
    subclass   = VGA
эти в компах стоят. ещё на окне у меня пачка лежит - в основном ATI и S3 всех мастей и пород.
список на всякий случай - мало ли чё ещё потестить захочешь =)))
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35267
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Alex Keda » 2009-09-16 15:05:04

там полноценная фря бутиться. 7.2 релиз, второй помоему патчлевел.
можно и модули и чё хочешь. ядро то что мы стобой под интел 810 фиксили...
Убей их всех! Бог потом рассортирует...

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 15:05:24

подходят токо где есть
chip=0x8a015333

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-16 15:05:35

paradox писал(а):там мютекс дестрой а не lock
sorry, невнимательность ;)

мне вот интересно, не будет ли конфликтов, если использовать один и тотже uniquifier
SYSINIT(x86bios,...)
и
DECLARE_MODULE(x86bios, ...)

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35267
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Alex Keda » 2009-09-16 15:06:26

ну таких на живых компах три - из списка чтоя выкатил.
ещё на окне скольк-то валяется... надо смотреть
Убей их всех! Бог потом рассортирует...

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 15:09:41

мне вот интересно, не будет ли конфликтов, если использовать один и тотже uniquifier
SYSINIT(x86bios,...)
и
DECLARE_MODULE(x86bios, ...)
не должно
ибо

Код: Выделить всё

#define C_SYSINIT(uniquifier, subsystem, order, func, ident)    \
        static struct sysinit uniquifier ## _sys_init = {       \
                subsystem,                                      \
                order,                                          \
                func,                                           \
                (ident)                                         \
        };                                                      \
        DATA_SET(sysinit_set,uniquifier ## _sys_init)

#define SYSINIT(uniquifier, subsystem, order, func, ident)      \
        C_SYSINIT(uniquifier, subsystem, order,                 \
        (sysinit_cfunc_t)(sysinit_nfunc_t)func, (void *)(ident))

Код: Выделить всё

#define DECLARE_MODULE(name, data, sub, order)                          \
        MODULE_DEPEND(name, kernel, __FreeBSD_version,                  \
            __FreeBSD_version, MODULE_KERNEL_MAXVER);                   \
        MODULE_METADATA(_md_##name, MDT_MODULE, &data, #name);          \
        SYSINIT(name##module, sub, order, module_register_init, &data); \
        struct __hack

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 15:14:12

static struct x86emu xbios86emu;
надо тоже как то будет переименовать
может в x86bios_ctx;
что ли

или
x86bios_emu;

даже не знаю как красивее

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 19:33:58

с 8битами
наверное для начала нужно будет сделать 8битовую палитру
по примеру

Код: Выделить всё

\sys\dev\syscons\scvgarndr.c

static uint32_t vga_palette32[16] = {
        0x000000, 0x0000ad, 0x00ad00, 0x00adad,
        0xad0000, 0xad00ad, 0xad5200, 0xadadad,
        0x525252, 0x5252ff, 0x52ff52, 0x52ffff,
        0xff5252, 0xff52ff, 0xffff52, 0xffffff
};

static uint16_t vga_palette16[16] = {
        0x0000, 0x0016, 0x0560, 0x0576, 0xb000, 0xb016, 0xb2a0, 0xb576,
        0x52aa, 0x52bf, 0x57ea, 0x57ff, 0xfaaa, 0xfabf, 0xffea, 0xffff
};

static uint16_t vga_palette15[16] = {
        0x0000, 0x0016, 0x02c0, 0x02d6, 0x5800, 0x5816, 0x5940, 0x5ad6,
        0x294a, 0x295f, 0x2bea, 0x2bff, 0x7d4a, 0x7d5f, 0x7fea, 0x7fff
};
токо где бы выискать цветовую палиру цветов которые должны получаться
что бы добавить

Код: Выделить всё

static uint8_t vga_palette8[16] = {

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 20:43:04

возможно так

Код: Выделить всё

--- scvgarndr.c.orig    2009-09-16 21:38:42.000000000 +0400
+++ scvgarndr.c 2009-09-16 21:41:53.000000000 +0400
@@ -194,7 +194,7 @@
                        writew(pos, vga_palette15[color]);              \
                        break;                                          \
                case 8:                                                 \
-                       writeb(pos, (uint8_t)color);                    \
+                       writeb(pos, vga_palette8[color]);               \
                }

 static uint32_t vga_palette32[16] = {
@@ -214,6 +214,11 @@
        0x294a, 0x295f, 0x2bea, 0x2bff, 0x7d4a, 0x7d5f, 0x7fea, 0x7fff
 };

+static uint8_t vga_palette8[16] = {
+       0x00, 0x04, 0x02, 0x06, 0x01, 0x05, 0x03, 0x07,
+       0x08, 0x0c, 0x0a, 0x0e, 0x09, 0x0d, 0x0b, 0x0f
+};
+
 #ifndef SC_NO_CUTPASTE
 static uint32_t mouse_buf32[256];
 static uint16_t mouse_buf16[256];
@@ -1228,7 +1233,7 @@
                                u8 = (uint8_t*)(p + j * pixel_size);
                                mouse_buf8[i * 16 + j] = *u8;
                                if (mouse_or_mask[i] & (1 << (15 - j)))
-                                       writeb(u8, 15);
+                                       writeb(u8, vga_pallete8[15]);
                                else if (mouse_and_mask[i] & (1 << (15 - j)))
                                        writeb(u8, 0);
                                break;

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 23:54:27

был когда то баг
я поднимал
после kbdcontrol -l ru.koi8-ru
пропадала индикация CapsLock Led индикатора
при переключении раскладки rus/eng по CapLock клавиши - в консоли
покифисл

фикс применим начиная с 5бсд версии
тоесть и для 7 и 8 он актуален

/src/sys/dev/kbd/kbd.c

Код: Выделить всё

--- kbd.c.orig  2009-09-16 23:13:29.000000000 +0000
+++ kbd.c       2009-09-16 23:42:02.000000000 +0000
@@ -1220,6 +1220,19 @@
        if (up) {       /* break: key released */
                action = kbd->kb_lastact[keycode];
                kbd->kb_lastact[keycode] = NOP;
+
+               switch (keycode) {
+               case 58:
+#ifndef PC98
+                       state &= ~CLKDOWN;
+#else
+                       state &= ~CLKED;
+                       i = state & LOCK_MASK;
+                       kbdd_ioctl(kbd, KDSETLED, (caddr_t)&i);
+#endif
+                       break;
+               }
+
                switch (action) {
                case LSHA:
                        if (state & SHIFTAON) {
@@ -1291,6 +1304,7 @@
                        state &= ~NLKDOWN;
                        break;
                case CLK:
+#if 0
 #ifndef PC98
                        state &= ~CLKDOWN;
 #else
@@ -1298,6 +1312,7 @@
                        i = state & LOCK_MASK;
                        kbdd_ioctl(kbd, KDSETLED, (caddr_t)&i);
 #endif
+#endif
                        break;
                case SLK:
                        state &= ~SLKDOWN;
@@ -1321,12 +1336,26 @@
                                kbd->kb_lastact[keycode] = action;
                        if (kbd->kb_lastact[keycode] != action)
                                action = NOP;
+
+                       switch (keycode) {
+                       case 58:
+#ifndef PC98
+                               set_lockkey_state(kbd, state, CLK);
+#else
+                               state |= CLKED;
+                               i = state & LOCK_MASK;
+                               kbdd_ioctl(kbd, KDSETLED, (caddr_t)&i);
+#endif
+                               break;
+                       }
+
                        switch (action) {
                        /* LOCKING KEYS */
                        case NLK:
                                set_lockkey_state(kbd, state, NLK);
                                break;
                        case CLK:
+#if 0
 #ifndef PC98
                                set_lockkey_state(kbd, state, CLK);
 #else
@@ -1334,6 +1363,7 @@
                                i = state & LOCK_MASK;
                                kbdd_ioctl(kbd, KDSETLED, (caddr_t)&i);
 #endif
+#endif
                                break;
                        case SLK:
                                set_lockkey_state(kbd, state, SLK);
пока что отписал максиму евменкину он вроде занимался немного kbd
если он не возьметься
а я забуду и кому то это будет нужно
отправте PR

это фиксить CapsLock клавишу и делает ее индикацию независимой от keymap
тудаже нужно добавить еще и ScrollLock индикацию и NumLock
что бы они были независимы от keymap (индикация всмысле независимая а не клавиши)

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-17 1:11:38

таксь

включи мютекс
и потестируй
если ничего не будет падать (у меня вроде не падает)
то убирай опцию
пускай будут по умолчанию

отменяй SYSINIT/UNIIT
но функции x86bios_sys* переименуй в x86bios_* тоесть init и uninit
и возращай MODULE
заменяй патчи
и в этом виде будем толкать в куррент
странно что Ли молчит
в рассылке там во всю учавствует по секюрити

а с SYSINIT
это уже дальнейшые експерименты будут

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-17 2:02:57

paradox писал(а):и возращай MODULE
возвращать модуль для x86emu или оставить только x86bios?

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-17 2:06:13

нене
x86emu не возращаем
пусть все компилиться статиком в x86bios как есть

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-17 2:43:51

перезалил патчики.

кстати, может заменить в модуле SI_SUB_DRIVERS на, например, SI_SUB_KMEM чтоб x86bios инициализировался чуток раньше?

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-17 2:55:00

даже не знаю
Ли что то молчит как не живой