📄 lock.c
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* * $Id: lock.c,v 1.9 2002/10/24 17:01:14 gropp Exp $ * * Copyright (C) 1997 University of Chicago. * See COPYRIGHT notice in top-level directory. */#include "adio.h"#ifdef ROMIO_NTFSint ADIOI_Set_lock(FDTYPE fd, int cmd, int type, ADIO_Offset offset, int whence, ADIO_Offset len) { int ret_val, error_code; OVERLAPPED Overlapped; DWORD dwFlags; dwFlags = type; Overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);#ifdef HAVE_INT64 Overlapped.Offset = ( (DWORD) ( offset & (__int64) 0xFFFFFFFF ) ); Overlapped.OffsetHigh = ( (DWORD) ( (offset >> 32) & (__int64) 0xFFFFFFFF ) ); if (cmd == ADIOI_LOCK_CMD) ret_val = LockFileEx(fd, dwFlags, 0, ( (DWORD) ( len & (__int64) 0xFFFFFFFF ) ), ( (DWORD) ( (len >> 32) & (__int64) 0xFFFFFFFF ) ), &Overlapped); else ret_val = UnlockFileEx(fd, 0, ( (DWORD) ( len & (__int64) 0xFFFFFFFF ) ), ( (DWORD) ( (len >> 32) & (__int64) 0xFFFFFFFF ) ), &Overlapped);#else Overlapped.Offset = offset; Overlapped.OffsetHigh = 0; if (cmd == ADIOI_LOCK_CMD) ret_val = LockFileEx(fd, dwFlags, 0, len, 0, &Overlapped); else ret_val = UnlockFileEx(fd, 0, len, 0, &Overlapped);#endif if (!ret_val) { FPRINTF(stderr, "File locking failed in ADIOI_Set_lock.\n"); MPI_Abort(MPI_COMM_WORLD, 1); } error_code = (ret_val) ? MPI_SUCCESS : MPI_ERR_UNKNOWN; return error_code;}#elseint ADIOI_Set_lock(FDTYPE fd, int cmd, int type, ADIO_Offset offset, int whence, ADIO_Offset len) { int err, error_code; struct flock lock; lock.l_type = type; lock.l_start = offset; lock.l_whence = whence; lock.l_len = len; do { err = fcntl(fd, cmd, &lock); } while (err && (errno == EINTR)); if (err && (errno != EBADF)) { FPRINTF(stderr, "File locking failed in ADIOI_Set_lock. If the file system is NFS, you need to use NFS version 3 and mount the directory with the 'noac' option (no attribute caching).\n"); MPI_Abort(MPI_COMM_WORLD, 1); } error_code = (err == 0) ? MPI_SUCCESS : MPI_ERR_UNKNOWN; return error_code;}#endif#if (defined(HFS) || defined(XFS))int ADIOI_Set_lock64(FDTYPE fd, int cmd, int type, ADIO_Offset offset, int whence, ADIO_Offset len) { int err, error_code; struct flock64 lock; lock.l_type = type; lock.l_start = offset; lock.l_whence = whence; lock.l_len = len; do { err = fcntl(fd, cmd, &lock); } while (err && (errno == EINTR)); if (err && (errno != EBADF)) { FPRINTF(stderr, "File locking failed in ADIOI_Set_lock64\n"); MPI_Abort(MPI_COMM_WORLD, 1); } error_code = (err == 0) ? MPI_SUCCESS : MPI_ERR_UNKNOWN; return error_code;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -