Re: Information on use of Netsys.shm_open
Johan Mazel <[email protected]> Wed, 24 Mar 2010 13:25:48 +0100
| Newsgroups | gmane.comp.lang.ocaml.lib.net.devel |
|---|---|
| Message-ID | <[email protected]> |
2010/3/24 Gerd Stolpmann <[email protected]> > On Mi, 2010-03-24 at 01:32 +0100, Johan Mazel wrote: > > > > > > 2010/3/23 Gerd Stolpmann <[email protected]> > > > > On Di, 2010-03-23 at 19:15 +0100, Johan Mazel wrote: > > > Hi > > > I'm trying this little piece of code to open a shared memory > > and > > > modify it. > > > The code looks like this : > > > > > > open Unix > > > open Bigarray.Array1 > > > > > > let _ = > > > > > > Printf.printf("Test shared memory\n"); > > > > > > if (Netsys.have_posix_shm () = false) then > > > > > > Printf.printf "No POSIX SHM\n" > > > else > > > ( > > > > > > Printf.printf "POSIX SHM OK\n"; > > > > > > let shm_name = "/shm_test" in > > > > > > let right_list = ref [] in > > > > > > right_list := Netsys.SHM_O_CREAT :: !right_list; > > > right_list := Netsys.SHM_O_RDWR :: !right_list; > > > > > > ignore( > > > try > > > ( > > > Printf.printf "Netsys.shm_open > > call\n"; > > > > > > let sd = Netsys.shm_open > > shm_name ! > > > right_list 1 in > > > > > > Printf.printf "Netsys.shm_open > > ok\n"; > > > > > > let my_big_array = > > > Bigarray.Array1.map_file sd Bigarray.char Bigarray.c_layout > > true 100 > > > in > > > > > > let big_array_size = > > Bigarray.Array1.dim > > > my_big_array in > > > > > > Printf.printf "Size of BigArray: > > %d\n" > > > big_array_size; > > > > > > Bigarray.Array1.set my_big_array > > 0 'a'; > > > ) > > > with > > > | Unix_error (_ , invoked_function , > > > shm_name_failure) -> > > > ( > > > Printf.printf > > > "Opening failed through > > using > > > function %s on SHM %s\n" > > > invoked_function > > > shm_name_failure > > > ; > > > ) > > > ); > > > > > > Printf.printf "Shared memory tested\n"; > > > ) > > > > > > I can create the shared memory file descriptor, but only > > once. > > > When I try to access it again (y rzlaunching my program, > > there is an > > > error on shm_open. > > > > > > I have to guess about a cause to this problem: first, I did > > not set > > > the right in the right manner and second, I do not use > > unlink. > > > The doc about the permissions is very light in this page > > > > > ( > http://projects.camlcity.org/projects/dl/ocamlnet-2.2.9/doc/html-main/Netsys.html). > I tried with with 0, 1, 777 and none of these are working. > > > For the unlink function, my understanding is that it > > destroys the > > > file. But maybe, it has the same behviour as "close" in C > > for a file > > > descriptor. > > > > > > Well, shm_open just calls the C function with the same name, > > so for any > > detailed documentation see there. > > > > Which function does unlink call ? Because there is no unlink function > > in the posix C shared memory API. > > shm_unlink > > > Your guess is right, the error in your code is the bad > > permissions > > bitfield. 0o666 instead of 1 should be just ok to give > > everybody > > read/write access. The bitfield is interpreted as for any > > other file. > > > > Is there any doc available to know how to choose this code ? > > Your favourite Unix book. It is the same bitstring you can pass to the > chmod command. > > Gerd > Hi I understood that. But is there any reason why I should use 0o666 to have the same behaviour as 777 for chmod ? I have another question linked to the map_file command from Bigarray. Does this command makes mandatory the use of the rights Netsys.SHM_O_RDWR in the function shm_open and forbids the use of Netsys.SHM_O_RDONLY ? It is a result of my tests, but I would like a confirmation. I see this as a way to guarantee that the function set in Bigarray.genarray (and others) will be available in any case, but I am not sure of my interpretation. An extra question would be what are the case when Netsys.SHM_O_RDONLY would be useful if I cannot the use the result of shm_open in map_file ? In other words are there use cases where one can use shm_open with Netsys.SHM_O_RDONLY ? Thanks for your time. Johan Mazel ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Ocamlnet-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ocamlnet-devel