From: Zubin D. <zu...@ji...> - 2001-12-27 19:49:01
|
On Thu, 2001-12-27 at 07:39, Hallvar Helleseth wrote: > The way you think the context switching occurs is wrong. I've never > looked at the code your referancing to but anyways... > The idea of context switching in this form is just passing the _address_ > to the area in memory where that structure (or Object as in java if you will) resides. this way both the calling function and the function called can operate on the SAME structure (not on two duplicates). The same applies for Java when using Objects. You should read some C tuturials on pointers :) Hmm.. I've been thinking some more about this, and the only way to avoid data copying between the two processes (browser process and xine process) by passing an address as you think should happen, would be if you allocate an area in a shared memory region (e.g., SystemV shared memory, or in a shared mmap'd region). Note that these are separate processes created by fork, and not threads. Since netscape/mozilla uses its own buffers to pass data to the plugin, we would have to copy the data from those buffers into the shared memory region before passing a pointer to the xine process. Either that, or we would have to use some other IPC mechanism (again involving copying). Either way, you encounter excessive data copying, as well as context switch overhead of TLB flushes. Am I making sense? -Zubin > Anyways hope this clears out what you were thinking of :) > > Regards > Hallvar Helleseth |