* [d-kernel] Invalid kernel header included in userspace
@ 2003-12-08 11:46 Grigory Batalov
2003-12-08 12:08 ` Sergey Vlasov
0 siblings, 1 reply; 2+ messages in thread
From: Grigory Batalov @ 2003-12-08 11:46 UTC (permalink / raw)
To: devel-kernel
[-- Attachment #1: Type: text/plain, Size: 1039 bytes --]
Здравствуйте!
У меня есть утилита tpctlir из пакета tpctl, включающая
и выключающая инфракрасный порт на некоторых ноутбуках IBM
ThinkPad (600-х серий). При сборке в хэшере выходит на неё
ругань:
<skip>
cc -pipe -Wall -O2 -march=i586 -mcpu=i686 -Wcast-align -Wstrict-prototypes -o tpctlir tpctlir.c
In file included from /usr/include/linux/config.h:4,
from /usr/include/asm/system.h:4,
from tpctlir.c:1:
/usr/include/linux/autoconf.h:1:2: #error Invalid kernel header included in userspace
<skip>
Хотя в обычной системе она собирается. Я проверил, конечным
в цепочке является файл /var/run/kernel/autoconf.h из пакета
kernel-headers-common-1.1.3-alt1. В дереве хэшера этого файла
нет, и указание в Buildreq соответствующего пакета не помогает.
Наверное, он специально блокируется.
Исходник tpctlir прилагаю. Похоже, весь сыр-бор разгорелся
из-за функций cli() и sti(). Прошу совета, как, всё-таки,
собрать эту программу в пакет.
--
Григорий Баталов,
группа техподдержки
ОАО "Ковдорский ГОК"
[-- Attachment #2: tpctlir.c --]
[-- Type: text/plain, Size: 1276 bytes --]
//#include <asm/system.h>
#include <sys/io.h>
#include <stdio.h>
/*
* enable/disable IR on IBM ThinkPads with
* Programmable Option Select (e.g., the 760 and 765)
*/
int main(int argc, char **argv)
{
int val94, mask;
int enable;
if (argc != 2) {
printf("usage: tpctlir (0|1)\n");
return 1;
} else if (strcmp(argv[1], "0") == 0) {
enable = 0;
} else if (strcmp(argv[1], "1") == 0) {
enable = 1;
} else {
printf("usage: tpctlir (0|1)\n");
return 1;
}
if ( iopl(3) ) {
fprintf(stderr, "Permission denied - are you root?\n");
return 2;
}
cli();
val94 = inb(0x94); /* POS mask register */
outb(0xfE, 0x94); /* mask bit (0) for IR; changes enabled */
outb(0xfE, 0x47); /* pause */
mask = inb(0x0102); /* POS enable register */
mask &= 0xFE; /* mask bit (0) for IR enable/disable*/
mask |= enable; /* 1 to enable, 0 to disable */
outb(mask, 0x102);
outb(mask, 0x47); /* pause */
outb(val94, 0x94); /* restore POS mask to prevent changing */
outb(val94, 0x47); /* pause */
sti();
return 0;
}
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [d-kernel] Invalid kernel header included in userspace
2003-12-08 11:46 [d-kernel] Invalid kernel header included in userspace Grigory Batalov
@ 2003-12-08 12:08 ` Sergey Vlasov
0 siblings, 0 replies; 2+ messages in thread
From: Sergey Vlasov @ 2003-12-08 12:08 UTC (permalink / raw)
To: devel-kernel
[-- Attachment #1: Type: text/plain, Size: 1406 bytes --]
On Mon, Dec 08, 2003 at 02:46:18PM +0300, Grigory Batalov wrote:
> У меня есть утилита tpctlir из пакета tpctl, включающая
> и выключающая инфракрасный порт на некоторых ноутбуках IBM
> ThinkPad (600-х серий). При сборке в хэшере выходит на неё
> ругань:
>
> <skip>
> cc -pipe -Wall -O2 -march=i586 -mcpu=i686 -Wcast-align -Wstrict-prototypes -o tpctlir tpctlir.c
> In file included from /usr/include/linux/config.h:4,
> from /usr/include/asm/system.h:4,
> from tpctlir.c:1:
> /usr/include/linux/autoconf.h:1:2: #error Invalid kernel header included in userspace
> <skip>
>
> Хотя в обычной системе она собирается. Я проверил, конечным
> в цепочке является файл /var/run/kernel/autoconf.h из пакета
> kernel-headers-common-1.1.3-alt1. В дереве хэшера этого файла
> нет, и указание в Buildreq соответствующего пакета не помогает.
> Наверное, он специально блокируется.
>
> Исходник tpctlir прилагаю. Похоже, весь сыр-бор разгорелся
> из-за функций cli() и sti(). Прошу совета, как, всё-таки,
> собрать эту программу в пакет.
Какой ужас - cli() в userspace...
В принципе можно посчитать эту программу ядернозависимой и потребовать
установки настоящих заголовков ядра с помощью BuildRequires:
kernel-headers-std.
Или можно спереть определения __cli() и __sti() из asm/system.h (просто
cli() и sti() не сработают в случае CONFIG_SMP). А inb/outb есть в
sys/io.h.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-12-08 12:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-12-08 11:46 [d-kernel] Invalid kernel header included in userspace Grigory Batalov
2003-12-08 12:08 ` Sergey Vlasov
ALT Linux kernel packages development
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel-kernel/0 devel-kernel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel-kernel devel-kernel/ http://lore.altlinux.org/devel-kernel \
devel-kernel@altlinux.org devel-kernel@altlinux.ru devel-kernel@altlinux.com
public-inbox-index devel-kernel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel-kernel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git