MCPcopy Create free account
hub / github.com/F-Stack/f-stack / linux2freebsd_fcntl

Function linux2freebsd_fcntl

lib/ff_syscall_wrapper.c:281–344  ·  view source on GitHub ↗

convert linux argp to freebsd argp. */

Source from the content-addressed store, hash-verified

279
280/* convert linux argp to freebsd argp. */
281static inline int
282linux2freebsd_fcntl(int cmd, intptr_t *argp)
283{
284 switch(cmd) {
285 case LINUX_F_DUPFD:
286 return F_DUPFD;
287 case LINUX_F_GETFD:
288 return F_GETFD;
289 case LINUX_F_SETFD:
290 if (*argp & LINUX_O_CLOEXEC) {
291 //clear linux O_CLOEXEC, set freebsd O_CLOEXEC.
292 *argp &= ~LINUX_O_CLOEXEC;
293 *argp |= O_CLOEXEC;
294 }
295
296 return F_SETFD;
297 case LINUX_F_GETFL:
298 return F_GETFL;
299 case LINUX_F_SETFL:
300 if (*argp & LINUX_O_NONBLOCK) {
301 //clear linux O_NONBLOCK, set freebsd O_NONBLOCK.
302 *argp &= ~LINUX_O_NONBLOCK;
303 *argp |= O_NONBLOCK;
304 }
305
306 if (*argp & LINUX_O_APPEND) {
307 //clear linux O_APPEND, set freebsd O_APPEND.
308 *argp &= ~LINUX_O_APPEND;
309 *argp |= O_APPEND;
310 }
311
312 if (*argp & LINUX_O_ASYNC) {
313 //clear linux O_ASYNC, set freebsd O_ASYNC.
314 *argp &= ~LINUX_O_ASYNC;
315 *argp |= O_ASYNC;
316 }
317
318 if (*argp & LINUX_O_DIRECT) {
319 //clear linux O_DIRECT, set freebsd O_DIRECT.
320 *argp &= ~LINUX_O_DIRECT;
321 *argp |= O_DIRECT;
322 }
323
324 return F_SETFL;
325 case LINUX_F_GETLK:
326 return F_GETLK;
327 case LINUX_F_SETLK:
328 return F_SETLK;
329 case LINUX_F_SETLKW:
330 return F_SETLKW;
331 case LINUX_F_SETOWN:
332 return F_SETOWN;
333 case LINUX_F_GETOWN:
334 return F_GETOWN;
335 case LINUX_F_OFD_GETLK:
336 return F_OGETLK;
337 case LINUX_F_OFD_SETLK:
338 return F_OSETLK;

Callers 1

ff_fcntlFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected