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 /erts/preloaded | |
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 'erts/preloaded')
-rw-r--r-- | erts/preloaded/ebin/prim_file.beam | bin | 40888 -> 41176 bytes | |||
-rw-r--r-- | erts/preloaded/src/prim_file.erl | 8 |
2 files changed, 7 insertions, 1 deletions
diff --git a/erts/preloaded/ebin/prim_file.beam b/erts/preloaded/ebin/prim_file.beam Binary files differindex ff44d38fa9..b8f71b0c1e 100644 --- a/erts/preloaded/ebin/prim_file.beam +++ b/erts/preloaded/ebin/prim_file.beam diff --git a/erts/preloaded/src/prim_file.erl b/erts/preloaded/src/prim_file.erl index eafab1bae4..c412b7faf2 100644 --- a/erts/preloaded/src/prim_file.erl +++ b/erts/preloaded/src/prim_file.erl @@ -27,7 +27,7 @@ %% Generic file contents operations -export([open/2, close/1, datasync/1, sync/1, advise/4, position/2, truncate/1, write/2, pwrite/2, pwrite/3, read/2, read_line/1, pread/2, pread/3, - copy/3, sendfile/10]). + copy/3, sendfile/10, allocate/3]). %% Specialized file operations -export([open/1, open/3]). @@ -100,6 +100,7 @@ -define(FILE_FDATASYNC, 30). -define(FILE_ADVISE, 31). -define(FILE_SENDFILE, 32). +-define(FILE_ALLOCATE, 33). %% Driver responses -define(FILE_RESP_OK, 0). @@ -293,6 +294,11 @@ advise(#file_descriptor{module = ?MODULE, data = {Port, _}}, end. %% Returns {error, Reason} | ok. +allocate(#file_descriptor{module = ?MODULE, data = {Port, _}}, Offset, Length) -> + Cmd = <<?FILE_ALLOCATE, Offset:64/signed, Length:64/signed>>, + drv_command(Port, Cmd). + +%% Returns {error, Reason} | ok. write(#file_descriptor{module = ?MODULE, data = {Port, _}}, Bytes) -> case drv_command_nt(Port, [?FILE_WRITE,erlang:dt_prepend_vm_tag_data(Bytes)],undefined) of {ok, _Size} -> |