I ran in a problem with error message on openindiana:
fcntl: Invalid argument
I wrot short test program:
#include <sys/file.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
int main() {
struct flock64 l;
FILE *fp;
l.l_whence = SEEK_SET;
l.l_start = 0;
l.l_len = 0;
l.l_sysid = 0;
l.l_pid = 0;
fp = fopen("flocktest.c", "r");
if (fp == NULL) {
perror("fopen");
exit(1);
}
l.l_type = F_UNLCK;
if (fcntl(fileno(fp), F_FLOCK, &l) != 0) {
perror("fcntl");
exit(1);
}
printf("flocktest.c locked\n");
return 0;
}
This compiles on Openindiana without an error, but if it runs throws the error:
Invalid argument (os error 22)
If I copy this on Openindiana compiled code to Smartos it runs correctly.
OI illumos version:
SunOS oi-sr 5.11 illumos-2ee1ed1ec5 i86pc i386 i86pc
Which is:
git show 2ee1ed1ec5
commit 2ee1ed1ec5dfdf07d2c92db58b11f630de2a6e87
Author: Dan McDonald <[email protected]>
Date: Tue Sep 12 17:38:28 2017 -0400
Smartos illumos version:
SunOS smartos 5.11 joyent_20171026T003127Z i86pc i386 i86pc
The libc shows on both the same versions:
$ elfdump -v /lib/libc.so.1
Version Definition Section: .SUNW_version
index version dependency
[1] libc.so.1 [ BASE ]
[2] ILLUMOS_0.24 ILLUMOS_0.23
[3] ILLUMOS_0.23 ILLUMOS_0.22
..8<..
The error message points out that the problem is in kernel.
How can I get running the fcntl flock code on Openindiana?
The kernel builds seems to be nearly the same, but not exactly. The F_FLOCK
stuff was added much earlier.
<signaturebeforequotedtext></signaturebeforequotedtext><signatureafterquotedtext>--
Carsten
</signatureafterquotedtext>
_______________________________________________
oi-dev mailing list
[email protected]
https://openindiana.org/mailman/listinfo/oi-dev