aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/src/file.erl
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2013-01-11 16:17:57 +0100
committerBjörn-Egil Dahlberg <[email protected]>2013-01-11 16:17:57 +0100
commit8df9bc2fc2336245d26bdcf386fee43904d2b34b (patch)
treec37f14e3de7884a9e537dee9b0be6dfdba86d9a3 /lib/kernel/src/file.erl
parent1897e315ee2d8417a6e32f5fae00e9a124a45d83 (diff)
parent918d7a3f1ee1f0b10fa3ead21f79166328fd2dfe (diff)
downloadotp-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.erl14
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(),