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

