Merhaba Metin,

Bizi listeye mi ispiyonluyorsun ne yapıyorsun ;)

Bu vesile ile sysprog isimli bir mailing listimiz oldugunu hatirlatmak
isterim.

Selamlar...

 
Baris Simsek
http://www.enderunix.org/simsek
http://www.endersys.com.tr
 
-----Original Message-----
From: Metin KAYA [mailto:[EMAIL PROTECTED] 
Sent: Thursday, January 03, 2008 11:36 PM
To: [email protected]
Subject: [FreeBSD] lseek - select

Merhaba,

Asagidaki yazilar Murat BALABAN(MB), N. Ersen SISECI(NES), Baris SIMSEK(BS)
ve Metin KAYA(MK)
arasinda gecen lseek(2) ve select(2) konulu sohbetten alintidir.

MK: select(2) 'ye utimeout parametresi olarak NULL verilirse select(2) nasil
davranir?

BS: Isletim sistemi select 'e bir sinyal gondermedigi muddetce select dosya
tanimlayicilari
    (file descriptor set) uzerinde suresiz olarak bekler.



MK: Linux device driver'larda read(2) yapilirken asagidaki struct'in
    llseek fonksiyonu kullaniliyor mu? "strace cat /dev/metin" ile
    baktigimda "llseek" cagrisi goremedim ama emin olmak icin sormak
istedim.

    struct file_operations metin_fops = {
          .owner   =  THIS_MODULE,
          .llseek  =  metin_llseek,
          .read    =  metin_read,
          .write   =  metin_write,
          .ioctl   =  metin_ioctl,
          .open    =  metin_open,
          .release =  metin_release,
    };

MB: open, read ve close hook'lari calisir. sen open(2) edip, lseek(2)
    calistirirsan ancak o zaman lseek(2) calisir.

NES: lseek : Seek to a specified position in a file (used for random access
when reading or writing a file) 
           - The original seek system call used a 16 bit address 
           - "lseek" is named because it uses a "long" integer as the
address to seek to. In practice this is a 32 bit integer on most current
machines 
           - The UNIX standards organizations have apparently not yet
standardized a suitable seek system call for 64 bit addresses 
           - Currently (January 2005), the llseek system call is available
on Solaris (hercules), but there is no indication that this system call is
portable 
           - Versions of Linux apparently support _llseek() or llseek() for
raw devices. Compilers may support lseek() as accepting a 64-bit long or add
lseek64(), according to a compile-time option.




MK: yani ben metin_read 'i implement ederken lseek kullanmamissam ya da
explicit olarak
    cagirmamissam lseek calismaz mi?

MB: iki system call farkli amaclar icin kullaniliyor. read, sequential
    olarak dosyadaki/device'daki veriyi okumak icin, lseek ise,
    dosya/device'da ileri-geri gitmek icin.

    Semantik olarak, bir system call icinden, ikinci bir system call
    cagrilmaz, bunun icin cok iyi bir nedenin olmasi lazim.

    lseek 'i explicit olarak cagirmamissan "strace cat /dev/a" gibi bir
komutta calismamasi lazim.

    struct file_operations 'da f_nextoff dosyadaki offset'i (en son kaldigi
yeri) tutuyor.
    Yani, bir sonraki read'de buradaki offset degeri esas olacaktir.

    lseek(2)'i random access yapmak icin kullaniyorsun, yoksa normalde ona
    gerek kalmadan isletim sistemi en son okudugu yerin state'ini tutuyor.




NES: "lseek" tanimlanmamissa "tail" gibi bir komutta nasil davranacaktir
isletim sistemi?

MB:  Denemek lazim, fakat tahminim

     #define ENOSYS          38      /* Function not implemented */

     gibi bir hata aliyor olabilir.

--                                               
Metin KAYA                  
EnderUNIX Software Developer          Endersys Software Engineer
http://www.EnderUNIX.org/metin        http://www.Endersys.com/


---------------------------------------------------------------------
Listeye soru sormadan once lutfen http://ipucu.enderunix.org sitesine
bakiniz.

Cikmak icin, e-mail: [EMAIL PROTECTED]
Liste arsivi: http://news.gmane.org/gmane.org.user-groups.bsd.turkey
FreeBSD 6 kitabi cikti! http://www.acikakademi.com/catalog/freebsd6




---------------------------------------------------------------------
Listeye soru sormadan once lutfen http://ipucu.enderunix.org sitesine bakiniz.

Cikmak icin, e-mail: [EMAIL PROTECTED]
Liste arsivi: http://news.gmane.org/gmane.org.user-groups.bsd.turkey
FreeBSD 6 kitabi cikti! http://www.acikakademi.com/catalog/freebsd6


Cevap