Re: [Mono-dev] Unix.Native
Just do `make install' on Mono. On Mon, Jan 12, 2015 at 11:59 PM, Greg Young wrote: > Are there any instructions on building/testing the area (linux)? > > I don't mind jumping in it a bit > > On Tue, Jan 13, 2015 at 6:28 AM, Miguel de Icaza > wrote: > > Hey, > > > > Good observation, so passing a -1 is enough. > > > > That said, perhaps we do need to expose a number of overloads with > various > > possible data types of other sizes. > > > > On Mon, Jan 12, 2015 at 11:23 PM, Greg Young > > wrote: > >> > >> I would guess it to be the same for others like F_RDAHEAD > >> > >> I don't think the long is too horrible as its only defined as 0/non-zero > >> > >> On Tue, Jan 13, 2015 at 6:15 AM, Miguel de Icaza > >> wrote: > >> > I added support for this on master. > >> > > >> > That said, there is an issue that I think will bite us. > >> > > >> > Currently the fcntl P/Invoke declaration uses a "long" as a general > >> > purpose > >> > way of passing flags to fcntl, and I suspect the parameter to > F_NOCACHE > >> > should be an int. > >> > > >> > Thoughts? > >> > > >> > Miguel > >> > > >> > On Mon, Jan 12, 2015 at 7:28 PM, Greg Young > >> > wrote: > >> >> > >> >> I have been trying to set F_NOCACHE via fcntl on a mac to no avail. > >> >> > >> >> r = Syscall.fcntl > >> >> (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, > >> >> 1); > >> >> } while (UnixMarshal.ShouldRetrySyscall ((int) r)); > >> >> if (r == -1) > >> >> UnixMarshal.ThrowExceptionForLastError (); > >> >> > >> >> (EINVAL) > >> >> > >> >> I have tried > >> >> 48 > >> >> 0x400 > >> >> and 0x4 > >> >> for F_NOCACHE though from > >> >> > >> >> > >> >> > https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 > >> >> > >> >> Given FcntlCommandFlags does not expose F_NOCACHE but it still should > >> >> be fine to jam the value into the enum > >> >> > >> >> Has anyone set this before? Chances of finding this on google are > >> >> slightly better than 0 :) > >> >> > >> >> Cheers, > >> >> > >> >> Greg > >> >> -- > >> >> Studying for the Turing test > >> >> ___ > >> >> Mono-devel-list mailing list > >> >> Mono-devel-list@lists.ximian.com > >> >> http://lists.ximian.com/mailman/listinfo/mono-devel-list > >> > > >> > > >> > >> > >> > >> -- > >> Studying for the Turing test > > > > > > > > -- > Studying for the Turing test > ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Unix.Native
Are there any instructions on building/testing the area (linux)? I don't mind jumping in it a bit On Tue, Jan 13, 2015 at 6:28 AM, Miguel de Icaza wrote: > Hey, > > Good observation, so passing a -1 is enough. > > That said, perhaps we do need to expose a number of overloads with various > possible data types of other sizes. > > On Mon, Jan 12, 2015 at 11:23 PM, Greg Young > wrote: >> >> I would guess it to be the same for others like F_RDAHEAD >> >> I don't think the long is too horrible as its only defined as 0/non-zero >> >> On Tue, Jan 13, 2015 at 6:15 AM, Miguel de Icaza >> wrote: >> > I added support for this on master. >> > >> > That said, there is an issue that I think will bite us. >> > >> > Currently the fcntl P/Invoke declaration uses a "long" as a general >> > purpose >> > way of passing flags to fcntl, and I suspect the parameter to F_NOCACHE >> > should be an int. >> > >> > Thoughts? >> > >> > Miguel >> > >> > On Mon, Jan 12, 2015 at 7:28 PM, Greg Young >> > wrote: >> >> >> >> I have been trying to set F_NOCACHE via fcntl on a mac to no avail. >> >> >> >> r = Syscall.fcntl >> >> (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, >> >> 1); >> >> } while (UnixMarshal.ShouldRetrySyscall ((int) r)); >> >> if (r == -1) >> >> UnixMarshal.ThrowExceptionForLastError (); >> >> >> >> (EINVAL) >> >> >> >> I have tried >> >> 48 >> >> 0x400 >> >> and 0x4 >> >> for F_NOCACHE though from >> >> >> >> >> >> https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 >> >> >> >> Given FcntlCommandFlags does not expose F_NOCACHE but it still should >> >> be fine to jam the value into the enum >> >> >> >> Has anyone set this before? Chances of finding this on google are >> >> slightly better than 0 :) >> >> >> >> Cheers, >> >> >> >> Greg >> >> -- >> >> Studying for the Turing test >> >> ___ >> >> Mono-devel-list mailing list >> >> Mono-devel-list@lists.ximian.com >> >> http://lists.ximian.com/mailman/listinfo/mono-devel-list >> > >> > >> >> >> >> -- >> Studying for the Turing test > > -- Studying for the Turing test ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Unix.Native
Hey, Good observation, so passing a -1 is enough. That said, perhaps we do need to expose a number of overloads with various possible data types of other sizes. On Mon, Jan 12, 2015 at 11:23 PM, Greg Young wrote: > I would guess it to be the same for others like F_RDAHEAD > > I don't think the long is too horrible as its only defined as 0/non-zero > > On Tue, Jan 13, 2015 at 6:15 AM, Miguel de Icaza > wrote: > > I added support for this on master. > > > > That said, there is an issue that I think will bite us. > > > > Currently the fcntl P/Invoke declaration uses a "long" as a general > purpose > > way of passing flags to fcntl, and I suspect the parameter to F_NOCACHE > > should be an int. > > > > Thoughts? > > > > Miguel > > > > On Mon, Jan 12, 2015 at 7:28 PM, Greg Young > wrote: > >> > >> I have been trying to set F_NOCACHE via fcntl on a mac to no avail. > >> > >> r = Syscall.fcntl > >> (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, > >> 1); > >> } while (UnixMarshal.ShouldRetrySyscall ((int) r)); > >> if (r == -1) > >> UnixMarshal.ThrowExceptionForLastError (); > >> > >> (EINVAL) > >> > >> I have tried > >> 48 > >> 0x400 > >> and 0x4 > >> for F_NOCACHE though from > >> > >> > https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 > >> > >> Given FcntlCommandFlags does not expose F_NOCACHE but it still should > >> be fine to jam the value into the enum > >> > >> Has anyone set this before? Chances of finding this on google are > >> slightly better than 0 :) > >> > >> Cheers, > >> > >> Greg > >> -- > >> Studying for the Turing test > >> ___ > >> Mono-devel-list mailing list > >> Mono-devel-list@lists.ximian.com > >> http://lists.ximian.com/mailman/listinfo/mono-devel-list > > > > > > > > -- > Studying for the Turing test > ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Unix.Native
I would guess it to be the same for others like F_RDAHEAD I don't think the long is too horrible as its only defined as 0/non-zero On Tue, Jan 13, 2015 at 6:15 AM, Miguel de Icaza wrote: > I added support for this on master. > > That said, there is an issue that I think will bite us. > > Currently the fcntl P/Invoke declaration uses a "long" as a general purpose > way of passing flags to fcntl, and I suspect the parameter to F_NOCACHE > should be an int. > > Thoughts? > > Miguel > > On Mon, Jan 12, 2015 at 7:28 PM, Greg Young wrote: >> >> I have been trying to set F_NOCACHE via fcntl on a mac to no avail. >> >> r = Syscall.fcntl >> (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, >> 1); >> } while (UnixMarshal.ShouldRetrySyscall ((int) r)); >> if (r == -1) >> UnixMarshal.ThrowExceptionForLastError (); >> >> (EINVAL) >> >> I have tried >> 48 >> 0x400 >> and 0x4 >> for F_NOCACHE though from >> >> https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 >> >> Given FcntlCommandFlags does not expose F_NOCACHE but it still should >> be fine to jam the value into the enum >> >> Has anyone set this before? Chances of finding this on google are >> slightly better than 0 :) >> >> Cheers, >> >> Greg >> -- >> Studying for the Turing test >> ___ >> Mono-devel-list mailing list >> Mono-devel-list@lists.ximian.com >> http://lists.ximian.com/mailman/listinfo/mono-devel-list > > -- Studying for the Turing test ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Unix.Native
I added support for this on master. That said, there is an issue that I think will bite us. Currently the fcntl P/Invoke declaration uses a "long" as a general purpose way of passing flags to fcntl, and I suspect the parameter to F_NOCACHE should be an int. Thoughts? Miguel On Mon, Jan 12, 2015 at 7:28 PM, Greg Young wrote: > I have been trying to set F_NOCACHE via fcntl on a mac to no avail. > > r = Syscall.fcntl > (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, > 1); > } while (UnixMarshal.ShouldRetrySyscall ((int) r)); > if (r == -1) > UnixMarshal.ThrowExceptionForLastError (); > > (EINVAL) > > I have tried > 48 > 0x400 > and 0x4 > for F_NOCACHE though from > > https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 > > Given FcntlCommandFlags does not expose F_NOCACHE but it still should > be fine to jam the value into the enum > > Has anyone set this before? Chances of finding this on google are > slightly better than 0 :) > > Cheers, > > Greg > -- > Studying for the Turing test > ___ > Mono-devel-list mailing list > Mono-devel-list@lists.ximian.com > http://lists.ximian.com/mailman/listinfo/mono-devel-list > ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Unix.Native
Rodrigo, What do you think as a pattern (there are quite a few places like this) if it were to do something like: [Conditional("DEBUG")] private void VerifyCommandEnum(T enum) { if(!Enum.IsDefined(typeof(T), command)) throw new Exception(string.Format("The value passed '{0}' for {1} is not a defined value and will fail at runtime.", enum, typeof(T).ToString()); } This will be slower but will give a reasonably sane error in debug at least. I can send over a PR with a few of them covered but wanted to run it by here before I spent the time on it. Greg On Tue, Jan 13, 2015 at 4:16 AM, Greg Young wrote: > btw if anyone runs into this (should be a top google result) and the > constants are not in commands here is how to do it: > > Not the prettiest but it should work > > #if __MonoCS__ || USE_UNIX_IO > [DllImport("libc")] > static extern int fcntl(int fd, uint command, int arg); > #endif > > if (OS.OsFlavor != OsFlavor.MacOS) return; > #if __MonoCS__ || USE_UNIX_IO > long r = 0; > do { > r = fcntl (handle.DangerousGetHandle().ToInt32(), MAC_F_NOCACHE, 1); > } while (UnixMarshal.ShouldRetrySyscall ((int) r)); > if (r == -1) > UnixMarshal.ThrowExceptionForLastError (); > #endif > > On Tue, Jan 13, 2015 at 3:49 AM, Greg Young wrote: >> If we can get a list of all the params that need to be supported and >> the varying mappings I have no problem working on it. >> >> I will look into its build etc as I have never dealt with it internally. >> >> Greg >> >> On Tue, Jan 13, 2015 at 3:48 AM, Rodrigo Kumpera wrote: >>> I agree we would be better with a better error message. >>> >>> Said that, right now Mono.Posix lacks a more dedicated maintainer and it >>> would be lovely if you >>> could bring some love to it. :) >>> >>> On Mon, Jan 12, 2015 at 8:39 PM, Greg Young wrote: There are a ton to surface ... I just ran into this one :) In general I agree with you surfacing is better I was thinking just letting me call it if it doesn't understand it (or having a better message) would be useful. I spun for hours thinking what was wrong with my parameters to the call thinking it for some undocumented reason was returning EINVAL :) On Tue, Jan 13, 2015 at 3:30 AM, Rodrigo Kumpera wrote: > That would change the behavior of the function and translate into a more > fragile API. > > The way to go is to surface this option. > > On Mon, Jan 12, 2015 at 8:23 PM, Greg Young > wrote: >> >> I figured out why after a while of looking. The C code translates the >> argument >> >> int Mono_Posix_FromFcntlCommand (int x, int *r) >> >> When its something that is not a known command it returns EINVAL. >> Might a better option be to try to let it pass through otherwise how >> could I call for instance a value on a ac? >> >> Cheers, >> >> Greg >> >> On Tue, Jan 13, 2015 at 2:28 AM, Greg Young >> wrote: >> > I have been trying to set F_NOCACHE via fcntl on a mac to no avail. >> > >> > r = Syscall.fcntl >> > (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, >> > 1); >> > } while (UnixMarshal.ShouldRetrySyscall ((int) r)); >> > if (r == -1) >> > UnixMarshal.ThrowExceptionForLastError (); >> > >> > (EINVAL) >> > >> > I have tried >> > 48 >> > 0x400 >> > and 0x4 >> > for F_NOCACHE though from >> > >> > >> > https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 >> > >> > Given FcntlCommandFlags does not expose F_NOCACHE but it still should >> > be fine to jam the value into the enum >> > >> > Has anyone set this before? Chances of finding this on google are >> > slightly better than 0 :) >> > >> > Cheers, >> > >> > Greg >> > -- >> > Studying for the Turing test >> >> >> >> -- >> Studying for the Turing test >> ___ >> Mono-devel-list mailing list >> Mono-devel-list@lists.ximian.com >> http://lists.ximian.com/mailman/listinfo/mono-devel-list > > -- Studying for the Turing test >>> >>> >> >> >> >> -- >> Studying for the Turing test > > > > -- > Studying for the Turing test -- Studying for the Turing test ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Unix.Native
btw if anyone runs into this (should be a top google result) and the constants are not in commands here is how to do it: Not the prettiest but it should work #if __MonoCS__ || USE_UNIX_IO [DllImport("libc")] static extern int fcntl(int fd, uint command, int arg); #endif if (OS.OsFlavor != OsFlavor.MacOS) return; #if __MonoCS__ || USE_UNIX_IO long r = 0; do { r = fcntl (handle.DangerousGetHandle().ToInt32(), MAC_F_NOCACHE, 1); } while (UnixMarshal.ShouldRetrySyscall ((int) r)); if (r == -1) UnixMarshal.ThrowExceptionForLastError (); #endif On Tue, Jan 13, 2015 at 3:49 AM, Greg Young wrote: > If we can get a list of all the params that need to be supported and > the varying mappings I have no problem working on it. > > I will look into its build etc as I have never dealt with it internally. > > Greg > > On Tue, Jan 13, 2015 at 3:48 AM, Rodrigo Kumpera wrote: >> I agree we would be better with a better error message. >> >> Said that, right now Mono.Posix lacks a more dedicated maintainer and it >> would be lovely if you >> could bring some love to it. :) >> >> On Mon, Jan 12, 2015 at 8:39 PM, Greg Young wrote: >>> >>> There are a ton to surface ... I just ran into this one :) >>> >>> In general I agree with you surfacing is better I was thinking just >>> letting me call it if it doesn't understand it (or having a better >>> message) would be useful. I spun for hours thinking what was wrong >>> with my parameters to the call thinking it for some undocumented >>> reason was returning EINVAL :) >>> >>> On Tue, Jan 13, 2015 at 3:30 AM, Rodrigo Kumpera >>> wrote: >>> > That would change the behavior of the function and translate into a more >>> > fragile API. >>> > >>> > The way to go is to surface this option. >>> > >>> > On Mon, Jan 12, 2015 at 8:23 PM, Greg Young >>> > wrote: >>> >> >>> >> I figured out why after a while of looking. The C code translates the >>> >> argument >>> >> >>> >> int Mono_Posix_FromFcntlCommand (int x, int *r) >>> >> >>> >> When its something that is not a known command it returns EINVAL. >>> >> Might a better option be to try to let it pass through otherwise how >>> >> could I call for instance a value on a ac? >>> >> >>> >> Cheers, >>> >> >>> >> Greg >>> >> >>> >> On Tue, Jan 13, 2015 at 2:28 AM, Greg Young >>> >> wrote: >>> >> > I have been trying to set F_NOCACHE via fcntl on a mac to no avail. >>> >> > >>> >> > r = Syscall.fcntl >>> >> > (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, >>> >> > 1); >>> >> > } while (UnixMarshal.ShouldRetrySyscall ((int) r)); >>> >> > if (r == -1) >>> >> > UnixMarshal.ThrowExceptionForLastError (); >>> >> > >>> >> > (EINVAL) >>> >> > >>> >> > I have tried >>> >> > 48 >>> >> > 0x400 >>> >> > and 0x4 >>> >> > for F_NOCACHE though from >>> >> > >>> >> > >>> >> > https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 >>> >> > >>> >> > Given FcntlCommandFlags does not expose F_NOCACHE but it still should >>> >> > be fine to jam the value into the enum >>> >> > >>> >> > Has anyone set this before? Chances of finding this on google are >>> >> > slightly better than 0 :) >>> >> > >>> >> > Cheers, >>> >> > >>> >> > Greg >>> >> > -- >>> >> > Studying for the Turing test >>> >> >>> >> >>> >> >>> >> -- >>> >> Studying for the Turing test >>> >> ___ >>> >> Mono-devel-list mailing list >>> >> Mono-devel-list@lists.ximian.com >>> >> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>> > >>> > >>> >>> >>> >>> -- >>> Studying for the Turing test >> >> > > > > -- > Studying for the Turing test -- Studying for the Turing test ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Unix.Native
If we can get a list of all the params that need to be supported and the varying mappings I have no problem working on it. I will look into its build etc as I have never dealt with it internally. Greg On Tue, Jan 13, 2015 at 3:48 AM, Rodrigo Kumpera wrote: > I agree we would be better with a better error message. > > Said that, right now Mono.Posix lacks a more dedicated maintainer and it > would be lovely if you > could bring some love to it. :) > > On Mon, Jan 12, 2015 at 8:39 PM, Greg Young wrote: >> >> There are a ton to surface ... I just ran into this one :) >> >> In general I agree with you surfacing is better I was thinking just >> letting me call it if it doesn't understand it (or having a better >> message) would be useful. I spun for hours thinking what was wrong >> with my parameters to the call thinking it for some undocumented >> reason was returning EINVAL :) >> >> On Tue, Jan 13, 2015 at 3:30 AM, Rodrigo Kumpera >> wrote: >> > That would change the behavior of the function and translate into a more >> > fragile API. >> > >> > The way to go is to surface this option. >> > >> > On Mon, Jan 12, 2015 at 8:23 PM, Greg Young >> > wrote: >> >> >> >> I figured out why after a while of looking. The C code translates the >> >> argument >> >> >> >> int Mono_Posix_FromFcntlCommand (int x, int *r) >> >> >> >> When its something that is not a known command it returns EINVAL. >> >> Might a better option be to try to let it pass through otherwise how >> >> could I call for instance a value on a ac? >> >> >> >> Cheers, >> >> >> >> Greg >> >> >> >> On Tue, Jan 13, 2015 at 2:28 AM, Greg Young >> >> wrote: >> >> > I have been trying to set F_NOCACHE via fcntl on a mac to no avail. >> >> > >> >> > r = Syscall.fcntl >> >> > (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, >> >> > 1); >> >> > } while (UnixMarshal.ShouldRetrySyscall ((int) r)); >> >> > if (r == -1) >> >> > UnixMarshal.ThrowExceptionForLastError (); >> >> > >> >> > (EINVAL) >> >> > >> >> > I have tried >> >> > 48 >> >> > 0x400 >> >> > and 0x4 >> >> > for F_NOCACHE though from >> >> > >> >> > >> >> > https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 >> >> > >> >> > Given FcntlCommandFlags does not expose F_NOCACHE but it still should >> >> > be fine to jam the value into the enum >> >> > >> >> > Has anyone set this before? Chances of finding this on google are >> >> > slightly better than 0 :) >> >> > >> >> > Cheers, >> >> > >> >> > Greg >> >> > -- >> >> > Studying for the Turing test >> >> >> >> >> >> >> >> -- >> >> Studying for the Turing test >> >> ___ >> >> Mono-devel-list mailing list >> >> Mono-devel-list@lists.ximian.com >> >> http://lists.ximian.com/mailman/listinfo/mono-devel-list >> > >> > >> >> >> >> -- >> Studying for the Turing test > > -- Studying for the Turing test ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Unix.Native
I agree we would be better with a better error message. Said that, right now Mono.Posix lacks a more dedicated maintainer and it would be lovely if you could bring some love to it. :) On Mon, Jan 12, 2015 at 8:39 PM, Greg Young wrote: > There are a ton to surface ... I just ran into this one :) > > In general I agree with you surfacing is better I was thinking just > letting me call it if it doesn't understand it (or having a better > message) would be useful. I spun for hours thinking what was wrong > with my parameters to the call thinking it for some undocumented > reason was returning EINVAL :) > > On Tue, Jan 13, 2015 at 3:30 AM, Rodrigo Kumpera > wrote: > > That would change the behavior of the function and translate into a more > > fragile API. > > > > The way to go is to surface this option. > > > > On Mon, Jan 12, 2015 at 8:23 PM, Greg Young > wrote: > >> > >> I figured out why after a while of looking. The C code translates the > >> argument > >> > >> int Mono_Posix_FromFcntlCommand (int x, int *r) > >> > >> When its something that is not a known command it returns EINVAL. > >> Might a better option be to try to let it pass through otherwise how > >> could I call for instance a value on a ac? > >> > >> Cheers, > >> > >> Greg > >> > >> On Tue, Jan 13, 2015 at 2:28 AM, Greg Young > >> wrote: > >> > I have been trying to set F_NOCACHE via fcntl on a mac to no avail. > >> > > >> > r = Syscall.fcntl > >> > (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, > >> > 1); > >> > } while (UnixMarshal.ShouldRetrySyscall ((int) r)); > >> > if (r == -1) > >> > UnixMarshal.ThrowExceptionForLastError (); > >> > > >> > (EINVAL) > >> > > >> > I have tried > >> > 48 > >> > 0x400 > >> > and 0x4 > >> > for F_NOCACHE though from > >> > > >> > > https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 > >> > > >> > Given FcntlCommandFlags does not expose F_NOCACHE but it still should > >> > be fine to jam the value into the enum > >> > > >> > Has anyone set this before? Chances of finding this on google are > >> > slightly better than 0 :) > >> > > >> > Cheers, > >> > > >> > Greg > >> > -- > >> > Studying for the Turing test > >> > >> > >> > >> -- > >> Studying for the Turing test > >> ___ > >> Mono-devel-list mailing list > >> Mono-devel-list@lists.ximian.com > >> http://lists.ximian.com/mailman/listinfo/mono-devel-list > > > > > > > > -- > Studying for the Turing test > ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Unix.Native
There are a ton to surface ... I just ran into this one :) In general I agree with you surfacing is better I was thinking just letting me call it if it doesn't understand it (or having a better message) would be useful. I spun for hours thinking what was wrong with my parameters to the call thinking it for some undocumented reason was returning EINVAL :) On Tue, Jan 13, 2015 at 3:30 AM, Rodrigo Kumpera wrote: > That would change the behavior of the function and translate into a more > fragile API. > > The way to go is to surface this option. > > On Mon, Jan 12, 2015 at 8:23 PM, Greg Young wrote: >> >> I figured out why after a while of looking. The C code translates the >> argument >> >> int Mono_Posix_FromFcntlCommand (int x, int *r) >> >> When its something that is not a known command it returns EINVAL. >> Might a better option be to try to let it pass through otherwise how >> could I call for instance a value on a ac? >> >> Cheers, >> >> Greg >> >> On Tue, Jan 13, 2015 at 2:28 AM, Greg Young >> wrote: >> > I have been trying to set F_NOCACHE via fcntl on a mac to no avail. >> > >> > r = Syscall.fcntl >> > (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, >> > 1); >> > } while (UnixMarshal.ShouldRetrySyscall ((int) r)); >> > if (r == -1) >> > UnixMarshal.ThrowExceptionForLastError (); >> > >> > (EINVAL) >> > >> > I have tried >> > 48 >> > 0x400 >> > and 0x4 >> > for F_NOCACHE though from >> > >> > https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 >> > >> > Given FcntlCommandFlags does not expose F_NOCACHE but it still should >> > be fine to jam the value into the enum >> > >> > Has anyone set this before? Chances of finding this on google are >> > slightly better than 0 :) >> > >> > Cheers, >> > >> > Greg >> > -- >> > Studying for the Turing test >> >> >> >> -- >> Studying for the Turing test >> ___ >> Mono-devel-list mailing list >> Mono-devel-list@lists.ximian.com >> http://lists.ximian.com/mailman/listinfo/mono-devel-list > > -- Studying for the Turing test ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Unix.Native
That would change the behavior of the function and translate into a more fragile API. The way to go is to surface this option. On Mon, Jan 12, 2015 at 8:23 PM, Greg Young wrote: > I figured out why after a while of looking. The C code translates the > argument > > int Mono_Posix_FromFcntlCommand (int x, int *r) > > When its something that is not a known command it returns EINVAL. > Might a better option be to try to let it pass through otherwise how > could I call for instance a value on a ac? > > Cheers, > > Greg > > On Tue, Jan 13, 2015 at 2:28 AM, Greg Young > wrote: > > I have been trying to set F_NOCACHE via fcntl on a mac to no avail. > > > > r = Syscall.fcntl > > (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, > > 1); > > } while (UnixMarshal.ShouldRetrySyscall ((int) r)); > > if (r == -1) > > UnixMarshal.ThrowExceptionForLastError (); > > > > (EINVAL) > > > > I have tried > > 48 > > 0x400 > > and 0x4 > > for F_NOCACHE though from > > > https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 > > > > Given FcntlCommandFlags does not expose F_NOCACHE but it still should > > be fine to jam the value into the enum > > > > Has anyone set this before? Chances of finding this on google are > > slightly better than 0 :) > > > > Cheers, > > > > Greg > > -- > > Studying for the Turing test > > > > -- > Studying for the Turing test > ___ > Mono-devel-list mailing list > Mono-devel-list@lists.ximian.com > http://lists.ximian.com/mailman/listinfo/mono-devel-list > ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Unix.Native
I figured out why after a while of looking. The C code translates the argument int Mono_Posix_FromFcntlCommand (int x, int *r) When its something that is not a known command it returns EINVAL. Might a better option be to try to let it pass through otherwise how could I call for instance a value on a ac? Cheers, Greg On Tue, Jan 13, 2015 at 2:28 AM, Greg Young wrote: > I have been trying to set F_NOCACHE via fcntl on a mac to no avail. > > r = Syscall.fcntl > (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, > 1); > } while (UnixMarshal.ShouldRetrySyscall ((int) r)); > if (r == -1) > UnixMarshal.ThrowExceptionForLastError (); > > (EINVAL) > > I have tried > 48 > 0x400 > and 0x4 > for F_NOCACHE though from > https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 > > Given FcntlCommandFlags does not expose F_NOCACHE but it still should > be fine to jam the value into the enum > > Has anyone set this before? Chances of finding this on google are > slightly better than 0 :) > > Cheers, > > Greg > -- > Studying for the Turing test -- Studying for the Turing test ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
[Mono-dev] Unix.Native
I have been trying to set F_NOCACHE via fcntl on a mac to no avail. r = Syscall.fcntl (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, 1); } while (UnixMarshal.ShouldRetrySyscall ((int) r)); if (r == -1) UnixMarshal.ThrowExceptionForLastError (); (EINVAL) I have tried 48 0x400 and 0x4 for F_NOCACHE though from https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 Given FcntlCommandFlags does not expose F_NOCACHE but it still should be fine to jam the value into the enum Has anyone set this before? Chances of finding this on google are slightly better than 0 :) Cheers, Greg -- Studying for the Turing test ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list