diff options
author | Björn-Egil Dahlberg <[email protected]> | 2013-01-11 16:17:57 +0100 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2013-01-11 16:17:57 +0100 |
commit | 8df9bc2fc2336245d26bdcf386fee43904d2b34b (patch) | |
tree | c37f14e3de7884a9e537dee9b0be6dfdba86d9a3 /lib/kernel/src/file.erl | |
parent | 1897e315ee2d8417a6e32f5fae00e9a124a45d83 (diff) | |
parent | 918d7a3f1ee1f0b10fa3ead21f79166328fd2dfe (diff) | |
download | otp-8df9bc2fc2336245d26bdcf386fee43904d2b34b.tar.gz otp-8df9bc2fc2336245d26bdcf386fee43904d2b34b.tar.bz2 otp-8df9bc2fc2336245d26bdcf386fee43904d2b34b.zip |
Merge branch 'fdm/file-allocate/OTP-10680'
* fdm/file-allocate/OTP-10680:
Update preloaded prim_file.beam
erts: Fix xcomp configure for fallocate
Add file:allocate/3 operation
Diffstat (limited to 'lib/kernel/src/file.erl')
-rw-r--r-- | lib/kernel/src/file.erl | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/kernel/src/file.erl b/lib/kernel/src/file.erl index de3eaad5a1..16f2dde464 100644 --- a/lib/kernel/src/file.erl +++ b/lib/kernel/src/file.erl @@ -38,7 +38,7 @@ %% Specialized -export([ipread_s32bu_p32bu/3]). %% Generic file contents. --export([open/2, close/1, advise/4, +-export([open/2, close/1, advise/4, allocate/3, read/2, write/2, pread/2, pread/3, pwrite/2, pwrite/3, read_line/1, @@ -490,6 +490,18 @@ advise(#file_descriptor{module = Module} = Handle, Offset, Length, Advise) -> advise(_, _, _, _) -> {error, badarg}. +-spec allocate(File, Offset, Length) -> + 'ok' | {'error', posix()} when + File :: io_device(), + Offset :: non_neg_integer(), + Length :: non_neg_integer(). + +allocate(File, Offset, Length) when is_pid(File) -> + R = file_request(File, {allocate, Offset, Length}), + wait_file_reply(File, R); +allocate(#file_descriptor{module = Module} = Handle, Offset, Length) -> + Module:allocate(Handle, Offset, Length). + -spec read(IoDevice, Number) -> {ok, Data} | eof | {error, Reason} when IoDevice :: io_device() | atom(), Number :: non_neg_integer(), |