funkce write()

Martin `MJ' Mares mj na ucw.cz
Pondělí Květen 7 14:48:38 CEST 2007


Ahoj Dalibore,

> pisu si malinky wrapper na sockety a potreboval bych vedet, jak presne
> funguje write(), jenze nemuzu najit ten spravny .c soubor. Sice jsem
> nasel v kernelu asi tu spravnou socket->ops->sendmsg(), ale nejvice
> me zajima, kde dochazi ke kopirovani z meho bufferu[] do kerneliho
> a jak se to kopiruje a jestli to dela knihovna socket a kernel pak
> jeste jednou apod.?

v kernelu 2.6.20 to vypada takto:

sys_write() -> vfs_write() ... ten zjisti, ze socket nema svuj vlastni
write hook -> do_sync_write() -> aio_write hook -> sock_aio_write()
-> do_sock_write() a tam se prelozi na sendmsg -> __sock_sendmsg()
-> sendmsg hook od socketu, ktery uz je zavisly na protokolu. Data se
kopiruji az tam.

Socketova knihovna to urcite delat nemuze, protoze Linux zadnou nema :-)

				Have a nice fortnight
-- 
Martin `MJ' Mares                          <mj na ucw.cz>   http://mj.ucw.cz/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
Who is General Failure and why is he reading my disk?



Další informace o konferenci Linux