diff options
author | Filipe David Manana <[email protected]> | 2010-04-26 13:04:40 +0200 |
---|---|---|
committer | Raimo Niskanen <[email protected]> | 2010-05-20 15:48:17 +0200 |
commit | 21a67b797e40df930b83bd407ffc165b3f4b91b2 (patch) | |
tree | 268a10e8d1d4cd00c30d3f5ded8f103d9699167a /erts/emulator/drivers/common/ram_file_drv.c | |
parent | 3f53a96a8bd0cd4a18f819b6857e6a764706ede5 (diff) | |
download | otp-21a67b797e40df930b83bd407ffc165b3f4b91b2.tar.gz otp-21a67b797e40df930b83bd407ffc165b3f4b91b2.tar.bz2 otp-21a67b797e40df930b83bd407ffc165b3f4b91b2.zip |
Add file:advise/4 - a wrapper to the POSIX syscall posix_fadvise
Useful for informing the Operating System about the access pattern
for a file's data, so that it can adapt the caching strategy to
maximize disk IO performance.
Diffstat (limited to 'erts/emulator/drivers/common/ram_file_drv.c')
-rw-r--r-- | erts/emulator/drivers/common/ram_file_drv.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/erts/emulator/drivers/common/ram_file_drv.c b/erts/emulator/drivers/common/ram_file_drv.c index d4e547ade6..abedcc933a 100644 --- a/erts/emulator/drivers/common/ram_file_drv.c +++ b/erts/emulator/drivers/common/ram_file_drv.c @@ -46,6 +46,8 @@ #define RAM_FILE_UUENCODE 35 /* uuencode file */ #define RAM_FILE_UUDECODE 36 /* uudecode file */ #define RAM_FILE_SIZE 37 /* get file size */ +#define RAM_FILE_ADVISE 38 /* predeclare the access + * pattern for file data */ /* possible new operations include: DES_ENCRYPT DES_DECRYPT @@ -693,6 +695,13 @@ static void rfile_command(ErlDrvData e, char* buf, int count) case RAM_FILE_UUDECODE: /* uudecode file */ ram_file_uudecode(f); break; + + case RAM_FILE_ADVISE: + if (f->flags == 0) + error_reply(f, EBADF); + else + reply(f, 1, 0); + break; } /* * Ignore anything else -- let the caller hang. |