Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Linux drajveri:Kako da u file ops metodima saznam koji je minor broj device fajla nad kojim se radi?

[es] :: Kernel i OS programiranje :: Linux drajveri:Kako da u file ops metodima saznam koji je minor broj device fajla nad kojim se radi?

[ Pregleda: 3391 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

salec

Član broj: 6527
Poruke: 1738
*.rcub.bg.ac.yu



+25 Profil

icon Linux drajveri:Kako da u file ops metodima saznam koji je minor broj device fajla nad kojim se radi?02.07.2004. u 14:38 - pre 240 meseci
Posto se u pozivima read, write i llseek ne pojavljuje inode, kako onda da navatam minor broj tog device-a?
 
Odgovor na temu

caboom
Igor Bogicevic
bgd

Član broj: 255
Poruke: 1503
*.vdial.verat.net

ICQ: 60630914


+1 Profil

icon Re: Linux drajveri:Kako da u file ops metodima saznam koji je minor broj device fajla nad kojim se r02.07.2004. u 20:56 - pre 240 meseci
koristi stat da dobijes inode fajla (man 2 stat), mada ti u sustini i ne treba inode - mos' da koristis 'vako nesto:

Code:

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <linux/kdev_t.h>

int main()
{
  dev_t device;
  struct stat f_stat;
                
  if (stat ("/dev/hda", &f_stat) == -1)
  {
    fprintf(stderr, "baah!\n");
    exit (-1);
  }
    
  device = f_stat.st_rdev;
  printf ("major %u, minor %u\n", major(device), minor(device));
                
  return 0;
}


takodje bi major, minor number dobio i sa npr:

Code:

caboom@buddha: ~ % ls -l /dev/hda 
brw-rw----  1 root disk 3, 0 Feb 23 22:02 /dev/hda
caboom@buddha: ~ % ls -l /dev/hdd         
brw-rw----  1 root disk 22, 64 Feb 23 22:02 /dev/hdd
caboom@buddha: ~ % cat /proc/devices 
Character devices:
  1 mem
    4 /dev/vc/0
    4 tty
    4 ttyS
    5 /dev/tty
    5 /dev/console
    5 /dev/ptmx
    7 vcs
    10 misc
    13 input
    14 sound
    21 sg
    36 netlink
    81 video4linux
    89 i2c
    108 ppp
    116 alsa
    128 ptm
    136 pts
    180 usb
    202 cpu/msr
    203 cpu/cpuid
    226 drm

Block devices:
    2 fd
    3 ide0
    7 loop
    9 md
    11 sr
    22 ide1
    43 nbd
    253 device-mapper
    254 mdp


u /proc/devices-u doduse stoje samo major number-i.
 
Odgovor na temu

salec

Član broj: 6527
Poruke: 1738
*.rcub.bg.ac.yu



+25 Profil

icon Re: Linux drajveri:Kako da u file ops metodima saznam koji je minor broj device fajla nad kojim se radi?05.07.2004. u 10:56 - pre 240 meseci
Izvini, sad vidim da nisam napisao da se u pitanju radi o kernel modulu (drajveru) koji treba da funkcionise razlicito za razlicite minor brojeve.

Znaci, neko je otvorio device fajl za moj uredjaj i sad, za neki minor broj hocu da read i write rade na jedan nacin, a na razlicit za neki drugi minor broj. A vidim da read i write nemaju kao ulazni parametar pointer na inode nego samo pointer na file, gde nema na prvi pogled nicega sto bi posluzilo za pronalazenje inode-a, pa me je zanimalo kako to da izvedem.

U medjuvremenu sam u Rubinijevoj knjizi pronasao da se to radi prilikom open-a, da tada upisem u file strukturu doticnog fajla pointer na odgovarajucu fops strukturu koju sam spremio za taj slucaj... a ja sam zamisljao da mi u okviru svake funkcije treba switch (minor).. case (sto je moguce kod ioctl, koji se poziva sa jednim od parametara - pointerom na inode, ali ne i kod read i write koji to nemaju), pa sam zato pitao... mislim, ove file operations kanda da nisu sve od iste fele...
 
Odgovor na temu

caboom
Igor Bogicevic
bgd

Član broj: 255
Poruke: 1503
*.vdial.verat.net

ICQ: 60630914


+1 Profil

icon Re: Linux drajveri:Kako da u file ops metodima saznam koji je minor broj device fajla nad kojim se r11.07.2004. u 10:31 - pre 240 meseci
pa pazi, na kraju se sve zavrsava time da moraju da se postuju POSIX standardi u neku ruku, ali ako ti treba drugaciji nivo apstrakcije nad open/read/write-om uvek mozes da napises svoj api i dodas svoje ekvivalente syscall-ova u kernelu. jeste okolo-izokola, ali time se oslobadjas tereta koji nose standardi i sa druge strane takodje smanjujes portabilnost onoga sto si napisao.
 
Odgovor na temu

[es] :: Kernel i OS programiranje :: Linux drajveri:Kako da u file ops metodima saznam koji je minor broj device fajla nad kojim se radi?

[ Pregleda: 3391 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.