diff options
author | Erlang/OTP <[email protected]> | 2010-05-24 13:15:03 +0000 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2010-05-24 13:15:03 +0000 |
commit | be2ebfd0f2b8e15363288d1dab4c177c237e234a (patch) | |
tree | b0f8e2844240211f02f89c6fc09a1945af337d1b /lib/kernel/src/file_io_server.erl | |
parent | 458dcb10f98bffd241a837cbac7c108eb485f706 (diff) | |
parent | 329aff8ed81e94033c836e58bd294a68a8f7be8c (diff) | |
download | otp-be2ebfd0f2b8e15363288d1dab4c177c237e234a.tar.gz otp-be2ebfd0f2b8e15363288d1dab4c177c237e234a.tar.bz2 otp-be2ebfd0f2b8e15363288d1dab4c177c237e234a.zip |
Merge branch 'fm/file-operations' into dev
* fm/file-operations:
Update preloaded modules
Add file:advise/4 - a wrapper to the POSIX syscall posix_fadvise
Add file:datasync/1 for syncing file contents only
sys.h: Correct the get_int64() macro
OTP-8637 fm/file-operations
The functions file:advise/4 and file:datasync/1 have been added. (Thanks to
Filipe David Manana.)
Diffstat (limited to 'lib/kernel/src/file_io_server.erl')
-rw-r--r-- | lib/kernel/src/file_io_server.erl | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/kernel/src/file_io_server.erl b/lib/kernel/src/file_io_server.erl index 3ac35a209d..39dc32bb79 100644 --- a/lib/kernel/src/file_io_server.erl +++ b/lib/kernel/src/file_io_server.erl @@ -198,6 +198,14 @@ io_reply(From, ReplyAs, Reply) -> %%%----------------------------------------------------------------- %%% file requests +file_request({advise,Offset,Length,Advise}, + #state{handle=Handle}=State) -> + case ?PRIM_FILE:advise(Handle, Offset, Length, Advise) of + {error,_}=Reply -> + {stop,normal,Reply,State}; + Reply -> + {reply,Reply,State} + end; file_request({pread,At,Sz}, #state{handle=Handle,buf=Buf,read_mode=ReadMode}=State) -> case position(Handle, At, Buf) of @@ -219,6 +227,14 @@ file_request({pwrite,At,Data}, Reply -> std_reply(Reply, State) end; +file_request(datasync, + #state{handle=Handle}=State) -> + case ?PRIM_FILE:datasync(Handle) of + {error,_}=Reply -> + {stop,normal,Reply,State}; + Reply -> + {reply,Reply,State} + end; file_request(sync, #state{handle=Handle}=State) -> case ?PRIM_FILE:sync(Handle) of |