CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] Comment accéder aux instructions sys

kenshiro1980
kenshiro1980
Niveau 7
18 février 2004 à 16:03:31

Bonjour, j´aimerai savoir comment on peux accéder aux instructions système ( noyau) en C, sous linux. S´il y a des includes à mettre, lesquels ? Merci.

Vous venez de poster un message il y a moins d´une minute, merci d´attendre avant de réessayer.>TG

ackeur
ackeur
Niveau 8
18 février 2004 à 16:22:12

les instructions ou les commandes que tu utilises en userland, par ex mkdir, font appel en kernelland à des syscalls ( SYS_mkdir dans l´exemple), tu n´as pas réellement besoin de faire appel directement à ces syscall, si tu veux vraiment faire ça fais le en assembleur, par exemple afficher un message à l´écran, dans eax tu mov le numéro du syscall ( SYS_write = 4), dans ebx, ecx et edx les arguments de write, et tu fais appel à l´interruption 0x80 pour executer ton appel système
dans un programme en C tu utiliserais __asm__() pour executer des instructions assembleur
la table des appels système et leurs numéros se situe dans / usr/include/asm/unistd.h

@+

kenshiro1980
kenshiro1980
Niveau 7
18 février 2004 à 16:43:11

" tu n´as pas réellement besoin de faire appel directement à ces syscall", c´est pas à ces syscall que je faisait allusion . .. sinon j´aurai mis syscall . .., quand j´ai dis instructions, c´était pour désigner les fonctions/procédures système

western
western
Niveau 9
18 février 2004 à 17:33:22

$ man 2 mkdir
MKDIR(2) Manuel du programmeur Linux MKDIR(2)

NOM
mkdir - Créer un répertoire.

SYNOPSIS
#include < sys/types.h>
#include < fcntl.h>

int mkdir(const char *pathname, mode_t mode);

DESCRIPTION
mkdir crée un nouveau répertoire nommé pathname.

mode spécifie les permissions à appliquer au réperto...

etc.

kenshiro1980
kenshiro1980
Niveau 7
18 février 2004 à 17:42:54

lol, bon, c´est pas grave
c´est pas ça que je cherche
ce que je cherche en priorité c´est pouvoir accéder au sleep système ( c´est à dire pas le sleep " normal" : sleep(int)), et pouvoir accéder aux autres structures système en passant ( mais ça c´est pas très important)

ackeur
ackeur
Niveau 8
18 février 2004 à 18:00:48
  1. cat > sleep.c

int main(void) {
sleep(1);
return 0;
}

  1. cc sleep.c -o sleep
  2. strace . /sleep

. ..
nanosleep({1, 0}, {1, 0}) = 0
. ..

  1. man nanosleep

SYNOPSIS
#include < time.h>

int nanosleep(const struct timespec *req, struct timespec
*rem);

  1. less / usr/include/time.h

. ..

ça ira ?

kenshiro1980
kenshiro1980
Niveau 7
18 février 2004 à 18:05:08

mm, non non, c´est pas ce genre de sleep, le sleep système c´est celui qui s´endort sur une ressource et se réveille qu´on on le lui dit

int ressource;
sleep(&);

et le wakeup qui va avec

wakeup(&);

par exemple

mais sinon c´est pas si urgent que ça, mais ça serait bien quand même

ackeur
ackeur
Niveau 8
18 février 2004 à 18:13:38

ben je sais que ça fonctionne sur le principe des wait_queue ( voir / usr/include/linux/wait.h)
le mieux serait sûrement d´aller feuilleter le linux kernel hacker´s guide: http://www.cs.helsinki.fi/cache/sunsite.unc.edu/mdw/LDP/khg/khg.html

@+

kenshiro1980
kenshiro1980
Niveau 7
18 février 2004 à 18:16:56

lol, y a le sleep wakeup mechanism . . mais ça marche pas le lien hahaha
mais pour le wait, d´après ce qu´on a fait, c´est pour attendre la fin de son fils non ?

ackeur
ackeur
Niveau 8
18 février 2004 à 18:26:11

en gros le processus qui sleep est ajouté à une file d´attente ( une structure wait_queue est ajouté à la file) et il en est retiré lors de l´appel à wake_up()
sinon j´ai retrouvé le lien ^^
http://www.uni-tuebingen.de/zdv/zriinfo/linux/books/khg/subsection2_3_3_5.html

@+

kenshiro1980
kenshiro1980
Niveau 7
18 février 2004 à 18:36:25

oui je vois bien ça mais c´est pas exactement ça que le sleep système fait ( il fait en gros un peu comme pour le swapper)
et là c´est juste pour montrer comment ça marche le sleep/wakeup système . .. c´est pas vraiment ce que je cherche quoi . .
mais merci quand même d´avoir cherché
je vais le faire autrement avec les primitives des threads

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment