Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[NetBSD 5.99/i386] inb et outb

4 réponses
Avatar
JKB
Bonjourà tous,

Toujours avec mes problèmes de ventilateur sur un Aspire 1700,
j'essaye de compiler un bout de code fourni par un contributeur du
groupe.

Ce bout de code utilise i386_iopl et inb. J'essaye de le compiler
avec :

poincare:[~] > gcc -c acer_aspire_read_fan.c -Wall
acer_aspire_read_fan.c: In function 'main':
acer_aspire_read_fan.c:22: warning: implicit declaration of function 'inb'
poincare:[~] >

À l'édition des liens, j'ai un superbe :

poincare:[~] > gcc acer_aspire_read_fan.o -li386
acer_aspire_read_fan.o: In function `main':
acer_aspire_read_fan.c:(.text+0x45): undefined reference to `inb'
acer_aspire_read_fan.c:(.text+0x68): undefined reference to `inb'
poincare:[~] >

Sous Linux, ce sont des macros (l'erreur proviendrait alors d'un
fichier d'en-tête). Sous Solaris, ce sont des vraies fonctions
(problème d'édition des liens). Je n'arrive pas à trouver la
définition de ces fonctions/macros sous NetBSD 5.99. Elles sont
pourtant utilisées dans les sources du noyau, mais où ces @{^^ @#'ç
de fonctions sont-elles définies ?

Merci d'avance,

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.

4 réponses

Avatar
Bruno Ducrot
On 2010-04-08, JKB wrote:
Bonjourà tous,

Toujours avec mes problèmes de ventilateur sur un Aspire 1700,
j'essaye de compiler un bout de code fourni par un contributeur du
groupe.

Ce bout de code utilise i386_iopl et inb. J'essaye de le compiler
avec :

poincare:[~] > gcc -c acer_aspire_read_fan.c -Wall
acer_aspire_read_fan.c: In function 'main':
acer_aspire_read_fan.c:22: warning: implicit declaration of function 'inb'
poincare:[~] >

À l'édition des liens, j'ai un superbe :

poincare:[~] > gcc acer_aspire_read_fan.o -li386
acer_aspire_read_fan.o: In function `main':
acer_aspire_read_fan.c:(.text+0x45): undefined reference to `inb'
acer_aspire_read_fan.c:(.text+0x68): undefined reference to `inb'
poincare:[~] >

Sous Linux, ce sont des macros (l'erreur proviendrait alors d'un
fichier d'en-tête). Sous Solaris, ce sont des vraies fonctions
(problème d'édition des liens). Je n'arrive pas à trouver la
définition de ces fonctions/macros sous NetBSD 5.99. Elles sont
pourtant utilisées dans les sources du noyau, mais où ces @{^^ @#'ç
de fonctions sont-elles définies ?




Sous FreeBSD, il s'agit de machine/cpufunc.h et je pensais qu'il
s'agissait de la meme chose sous Net.

Au pire, on peut definir :

static inline unsigned char
inb(unsigned int port)
{
unsigned char

__asm volatile("inb %w1, %0" : "=a" (data) : "Nd" (port));
return (data);
}

quelque part dans le code.

--
Bruno Ducrot

-- Which is worse: ignorance or apathy?
-- Don't know. Don't care.
Avatar
JKB
Le 08-04-2010, ? propos de
Re: [NetBSD 5.99/i386] inb et outb,
Bruno Ducrot ?crivait dans fr.comp.os.bsd :
On 2010-04-08, JKB wrote:
Bonjourà tous,

Toujours avec mes problèmes de ventilateur sur un Aspire 1700,
j'essaye de compiler un bout de code fourni par un contributeur du
groupe.

Ce bout de code utilise i386_iopl et inb. J'essaye de le compiler
avec :

poincare:[~] > gcc -c acer_aspire_read_fan.c -Wall
acer_aspire_read_fan.c: In function 'main':
acer_aspire_read_fan.c:22: warning: implicit declaration of function 'inb'
poincare:[~] >

À l'édition des liens, j'ai un superbe :

poincare:[~] > gcc acer_aspire_read_fan.o -li386
acer_aspire_read_fan.o: In function `main':
acer_aspire_read_fan.c:(.text+0x45): undefined reference to `inb'
acer_aspire_read_fan.c:(.text+0x68): undefined reference to `inb'
poincare:[~] >

Sous Linux, ce sont des macros (l'erreur proviendrait alors d'un
fichier d'en-tête). Sous Solaris, ce sont des vraies fonctions
(problème d'édition des liens). Je n'arrive pas à trouver la
définition de ces fonctions/macros sous NetBSD 5.99. Elles sont
pourtant utilisées dans les sources du noyau, mais où ces @{^^ @#'ç
de fonctions sont-elles définies ?




Sous FreeBSD, il s'agit de machine/cpufunc.h et je pensais qu'il
s'agissait de la meme chose sous Net.

Au pire, on peut definir :

static inline unsigned char
inb(unsigned int port)
{
unsigned char

__asm volatile("inb %w1, %0" : "=a" (data) : "Nd" (port));
return (data);
}

quelque part dans le code.



Bon, avec ce bout de code, l'outil me renvoit au repos :

bash-4.1# ./a.out
FANR: 40
F1RC: 3

Lors d'une compilation du noyau, le ventilo finit par se mettre en
route et je lis :

bash-4.1# ./a.out
FANR: -84
F1RC: 0
(température 60 °C)

bash-4.1# ./a.out
FANR: -70
F1RC: 0
(63 °C à 67 °C)

bash-4.1# ./a.out
FANR: -127
F1RC: 0
(69 °C à 77 °C ventilateur toujours au repos)

bash-4.1# ./a.out
FANR: -127
F1RC: 0
(78 °C, le ventilateur tourne lentement)

J'arrête la compilation.. La température descend lentement
(ventilateur arrêté). Visiblement, le cycle est à hystéresis,
puisqu'à 67 °C en refroidissement, l'outil me renvoie :

bash-4.1# ./a.out
FANR: -127
F1RC: 0

En phase de chauffe, j'avais FANR=-70.

J'avoue ne pas savoir comment utiliser ces chiffres...

Cordialement,

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
JKB
Le 08-04-2010, ? propos de
Re: [NetBSD 5.99/i386] inb et outb,
JKB ?crivait dans fr.comp.os.bsd :
Le 08-04-2010, ? propos de
Re: [NetBSD 5.99/i386] inb et outb,
Bruno Ducrot ?crivait dans fr.comp.os.bsd :
On 2010-04-08, JKB wrote:
Bonjourà tous,

Toujours avec mes problèmes de ventilateur sur un Aspire 1700,
j'essaye de compiler un bout de code fourni par un contributeur du
groupe.

Ce bout de code utilise i386_iopl et inb. J'essaye de le compiler
avec :

poincare:[~] > gcc -c acer_aspire_read_fan.c -Wall
acer_aspire_read_fan.c: In function 'main':
acer_aspire_read_fan.c:22: warning: implicit declaration of function 'inb'
poincare:[~] >

À l'édition des liens, j'ai un superbe :

poincare:[~] > gcc acer_aspire_read_fan.o -li386
acer_aspire_read_fan.o: In function `main':
acer_aspire_read_fan.c:(.text+0x45): undefined reference to `inb'
acer_aspire_read_fan.c:(.text+0x68): undefined reference to `inb'
poincare:[~] >

Sous Linux, ce sont des macros (l'erreur proviendrait alors d'un
fichier d'en-tête). Sous Solaris, ce sont des vraies fonctions
(problème d'édition des liens). Je n'arrive pas à trouver la
définition de ces fonctions/macros sous NetBSD 5.99. Elles sont
pourtant utilisées dans les sources du noyau, mais où ces @{^^ @#'ç
de fonctions sont-elles définies ?




Sous FreeBSD, il s'agit de machine/cpufunc.h et je pensais qu'il
s'agissait de la meme chose sous Net.

Au pire, on peut definir :

static inline unsigned char
inb(unsigned int port)
{
unsigned char

__asm volatile("inb %w1, %0" : "=a" (data) : "Nd" (port));
return (data);
}

quelque part dans le code.



Bon, avec ce bout de code, l'outil me renvoit au repos :

bash-4.1# ./a.out
FANR: 40
F1RC: 3

Lors d'une compilation du noyau, le ventilo finit par se mettre en
route et je lis :

bash-4.1# ./a.out
FANR: -84
F1RC: 0
(température 60 °C)

bash-4.1# ./a.out
FANR: -70
F1RC: 0
(63 °C à 67 °C)

bash-4.1# ./a.out
FANR: -127
F1RC: 0
(69 °C à 77 °C ventilateur toujours au repos)

bash-4.1# ./a.out
FANR: -127
F1RC: 0
(78 °C, le ventilateur tourne lentement)

J'arrête la compilation.. La température descend lentement
(ventilateur arrêté). Visiblement, le cycle est à hystéresis,
puisqu'à 67 °C en refroidissement, l'outil me renvoie :

bash-4.1# ./a.out
FANR: -127
F1RC: 0

En phase de chauffe, j'avais FANR=-70.

J'avoue ne pas savoir comment utiliser ces chiffres...



En redescendant à 61°C, ça change à nouveau :

FANR: -84
F1RC: 0

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
Bruno Ducrot
On 2010-04-08, JKB wrote:
bash-4.1# ./a.out
FANR: -127
F1RC: 0
(69 °C à 77 °C ventilateur toujours au repos)

bash-4.1# ./a.out
FANR: -127
F1RC: 0
(78 °C, le ventilateur tourne lentement)





Aie. J'avais espere voir un changement ici. J'ai l'impression
de faire fausse route.

J'avais lu ca :

OperationRegion (FANC, SystemIO, 0x0500, 0xFF)
Field (FANC, ByteAcc, NoLock, Preserve)
{
Offset (0x56),
FANR, 8,
Offset (0x58),
F1CR, 8
}


Et dans la methode permettant de recuperer la temperature du processeur,
on peut y voir :

Method (_TMP, 0, NotSerialized)
{
...
...
Store (FANR, Local1)
Store (Local1, FANR)
Sleep (0x01F4)
Store (F1CR, Local2)
Store (Local2, F1CR)
...
}



J'ai donc espere qu'il y avait un bout de code manquant lie a FANR et
F1RC.

--
Bruno Ducrot

-- Which is worse: ignorance or apathy?
-- Don't know. Don't care.