~ubuntu-branches/ubuntu/trusty/erlang/trusty

« back to all changes in this revision

Viewing changes to lib/kernel/src/ram_file.erl

  • Committer: Bazaar Package Importer
  • Author(s): Clint Byrum
  • Date: 2011-05-05 15:48:43 UTC
  • mfrom: (3.5.13 sid)
  • Revision ID: james.westby@ubuntu.com-20110505154843-0om6ekzg6m7ugj27
Tags: 1:14.b.2-dfsg-3ubuntu1
* Merge from debian unstable.  Remaining changes:
  - Drop libwxgtk2.8-dev build dependency. Wx isn't in main, and not
    supposed to.
  - Drop erlang-wx binary.
  - Drop erlang-wx dependency from -megaco, -common-test, and -reltool, they
    do not really need wx. Also drop it from -debugger; the GUI needs wx,
    but it apparently has CLI bits as well, and is also needed by -megaco,
    so let's keep the package for now.
  - debian/patches/series: Do what I meant, and enable build-options.patch
    instead.
* Additional changes:
  - Drop erlang-wx from -et
* Dropped Changes:
  - patches/pcre-crash.patch: CVE-2008-2371: outer level option with
    alternatives caused crash. (Applied Upstream)
  - fix for ssl certificate verification in newSSL: 
    ssl_cacertfile_fix.patch (Applied Upstream)
  - debian/patches/series: Enable native.patch again, to get stripped beam
    files and reduce the package size again. (build-options is what
    actually accomplished this)
  - Remove build-options.patch on advice from upstream and because it caused
    odd build failures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
%%
2
2
%% %CopyrightBegin%
3
 
%% 
4
 
%% Copyright Ericsson AB 1997-2009. All Rights Reserved.
5
 
%% 
 
3
%%
 
4
%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
 
5
%%
6
6
%% The contents of this file are subject to the Erlang Public License,
7
7
%% Version 1.1, (the "License"); you may not use this file except in
8
8
%% compliance with the License. You should have received a copy of the
9
9
%% Erlang Public License along with this software. If not, it can be
10
10
%% retrieved online at http://www.erlang.org/.
11
 
%% 
 
11
%%
12
12
%% Software distributed under the License is distributed on an "AS IS"
13
13
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
14
14
%% the License for the specific language governing rights and limitations
15
15
%% under the License.
16
 
%% 
 
16
%%
17
17
%% %CopyrightEnd%
18
18
%%
19
19
-module(ram_file).
24
24
-export([open/2, close/1]).
25
25
-export([write/2, read/2, copy/3,
26
26
         pread/2, pread/3, pwrite/2, pwrite/3, 
27
 
         position/2, truncate/1, sync/1]).
 
27
         position/2, truncate/1, datasync/1, sync/1]).
28
28
 
29
29
%% Specialized file operations
30
30
-export([get_size/1, get_file/1, set_file/2, get_file_close/1]).
31
 
-export([compress/1, uncompress/1, uuencode/1, uudecode/1]).
 
31
-export([compress/1, uncompress/1, uuencode/1, uudecode/1, advise/4]).
32
32
 
33
33
-export([open_mode/1]).  %% used by ftp-file
34
34
 
60
60
-define(RAM_FILE_TRUNCATE,       14).
61
61
-define(RAM_FILE_PREAD,          17).
62
62
-define(RAM_FILE_PWRITE,         18).
 
63
-define(RAM_FILE_FDATASYNC,      19).
63
64
 
64
65
%% Other operations
65
66
-define(RAM_FILE_GET,            30).
70
71
-define(RAM_FILE_UUENCODE,       35).
71
72
-define(RAM_FILE_UUDECODE,       36).
72
73
-define(RAM_FILE_SIZE,           37).
 
74
-define(RAM_FILE_ADVISE,         38).
73
75
 
74
76
%% Open modes for RAM_FILE_OPEN
75
77
-define(RAM_FILE_MODE_READ,       1).
90
92
-define(RAM_FILE_RESP_NUMBER,     3).
91
93
-define(RAM_FILE_RESP_INFO,       4).
92
94
 
 
95
%% POSIX file advises
 
96
-define(POSIX_FADV_NORMAL,     0).
 
97
-define(POSIX_FADV_RANDOM,     1).
 
98
-define(POSIX_FADV_SEQUENTIAL, 2).
 
99
-define(POSIX_FADV_WILLNEED,   3).
 
100
-define(POSIX_FADV_DONTNEED,   4).
 
101
-define(POSIX_FADV_NOREUSE,    5).
 
102
 
93
103
%% --------------------------------------------------------------------------
94
104
%% Generic file contents operations.
95
105
%%
167
177
    %% XXX Should be moved down to the driver for optimization.
168
178
    file:copy_opened(Source, Dest, Length).
169
179
 
 
180
datasync(#file_descriptor{module = ?MODULE, data = Port}) ->
 
181
    call_port(Port, <<?RAM_FILE_FDATASYNC>>).
170
182
 
171
183
sync(#file_descriptor{module = ?MODULE, data = Port}) -> 
172
184
    call_port(Port, <<?RAM_FILE_FSYNC>>).
349
361
uudecode(#file_descriptor{}) ->
350
362
    {error, enotsup}.
351
363
 
 
364
advise(#file_descriptor{module = ?MODULE, data = Port}, Offset,
 
365
        Length, Advise) ->
 
366
    Cmd0 = <<?RAM_FILE_ADVISE, Offset:64/signed, Length:64/signed>>,
 
367
    case Advise of
 
368
    normal ->
 
369
        call_port(Port, <<Cmd0/binary, ?POSIX_FADV_NORMAL:32/signed>>);
 
370
    random ->
 
371
        call_port(Port, <<Cmd0/binary, ?POSIX_FADV_RANDOM:32/signed>>);
 
372
    sequential ->
 
373
        call_port(Port, <<Cmd0/binary, ?POSIX_FADV_SEQUENTIAL:32/signed>>);
 
374
    will_need ->
 
375
        call_port(Port, <<Cmd0/binary, ?POSIX_FADV_WILLNEED:32/signed>>);
 
376
    dont_need ->
 
377
        call_port(Port, <<Cmd0/binary, ?POSIX_FADV_DONTNEED:32/signed>>);
 
378
    no_reuse ->
 
379
        call_port(Port, <<Cmd0/binary, ?POSIX_FADV_NOREUSE:32/signed>>);
 
380
    _ ->
 
381
        {error, einval}
 
382
    end;
 
383
advise(#file_descriptor{}, _Offset, _Length, _Advise) ->
 
384
    {error, enotsup}.
 
385
 
352
386
 
353
387
 
354
388
%%%-----------------------------------------------------------------