On Mon, Feb 11, 2008 at 07:11:04PM +0100, Dan Lukes wrote: > Roman Divacky napsal/wrote, On 02/11/08 18:58: > > dane, proboha.. ja vim ze ti to tvoje grafomanie nedovoluje ale kdyz necemu > > nerozumis tak se k tomu nevyjadruj > > > > 1) ten copyin/copyout tam je samozrejme proto, protoze userland nam muze dat > > libovolnou adresu a kdyby nastal nejaky fault tak jde kernel do hajzlu > > (tj. kdyby tam nekdo poslal NULL a my bysme udelali *ptr = 1 tak panicujeme) > > ten copyin/copyout ma remapovany fault handler na "return EFAULT" > > Na to by stacilo platnost adresy zkontrolovat. Kopirovani by treba > nebylo.
vis co je "fault" ? pokud ano tak mi neni jasne jak muzes nechapat to co jsem napsal. proste mam treba segment pameti mapovany RO a userspace mi posle pro nejakou write operaci adresu pameti v tom segmentu nebo proste neco takoveho... nevim jak jinak to vysvetlit > > 2) dane, uvedom si ze se bavime o kopirovani 8 bajtu... (16 ti na 64bit > > platformach) > > to nema jiny efekt nez poniceni cache > > Do tech osmi bajtu se tak jako tak tesne pred tim sahalo - kdyz se ta > struktura vyplnovala. Takze, i kdybych pristoupil na tvoje tvrzeni, ze > pouzivani cache k tomu, k cemu je urcena, je jeji niceni - tak uz je > stejen znicena. acho jo.... jsme v samba_foo() v cache mame tu strukturu... pak volame syscall, ktery provede HODNE kodu nez se to dostane do do_sendfile(), v tu dobu uz jsou v cache davno jina data a tim ze tu strukturu musime nahrat ty data z te cache vypudime > > 3) userspace stranky se do kernelu samozrejme mapovat DAJI, zrovna ten > > sendfile > > to pouziva (man sf_buf) a mimochodem tohle je DALEKO rychlejsi na amd64 nez > > na i386. > > Ja myslim, ze Radimova otazka byla jasna - ptal se, proc se to > kopiruje. Takze kdyz tomu rozumis, a podle sebevedomeho prohlaseni > soudim, ze ano, tak mu odpovez. Myslim, ze si to precteme radi vsichni. > > A pokud svoji znalost take vtelis do prislusneho patche (jestli to > kopirovani je podle tebe zbytecne a tak strasne zdrzuje, tak by tam asi > nemelo byt) tak jeste lepe. nevim co na to odpovedet :) dane, ty mas hodne spatnej co :) copyin/copyout je tam aby nejaky fault nepanicnul system a ten copyin tam zbytecny neni, jen v pripade ze ta struktura obsahuje same NULL tak to nedava moc smysl. to je asi jako bych ti dal na praci abys jel na misto A a udelal tam co ti reknou a pak na misto B a udelal co ti tam reknou.. a kdyz ti na obou mistech reknou "nic/NULL" a ja to predem vim tak udelam lip ze te tam neposlu ne? -- FreeBSD mailing list ([email protected]) http://www.freebsd.cz/listserv/listinfo/users-l
