00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef LUMIERA_FILE_H
00023 #define LUMIERA_FILE_H
00024
00025
00026 #include "lib/mutex.h"
00027 #include "lib/llist.h"
00028 #include "lib/error.h"
00029
00030 NOBUG_DECLARE_FLAG (file);
00031
00032 LUMIERA_ERROR_DECLARE(FILE_CHANGED);
00033 LUMIERA_ERROR_DECLARE(FILE_NOCHUNKSIZE);
00034
00047 typedef struct lumiera_file_struct lumiera_file;
00048 typedef lumiera_file* LumieraFile;
00049
00050
00051 #include "backend/filedescriptor.h"
00052 #include "backend/filehandle.h"
00053 #include "backend/mmapings.h"
00054
00062 #define LUMIERA_FILE_READONLY (O_RDONLY | O_LARGEFILE | O_NOATIME)
00063 #define LUMIERA_FILE_READWRITE (O_RDWR | O_LARGEFILE | O_NOATIME)
00064 #define LUMIERA_FILE_CREATE (O_RDWR | O_LARGEFILE | O_NOATIME | O_CREAT | O_EXCL)
00065 #define LUMIERA_FILE_RECREATE (O_RDWR | O_LARGEFILE | O_NOATIME | O_CREAT | O_TRUNC)
00066
00067
00068 #define LUMIERA_FILE_MASK ~(O_CREAT | O_EXCL | O_TRUNC)
00069
00070 struct lumiera_file_struct
00071 {
00072
00073 llist node;
00074 char* name;
00075 LumieraFiledescriptor descriptor;
00076 };
00077
00078
00086 LumieraFile
00087 lumiera_file_init (LumieraFile self, const char* name, int flags);
00088
00089
00098 LumieraFile
00099 lumiera_file_destroy (LumieraFile self);
00100
00101
00108 LumieraFile
00109 lumiera_file_new (const char* name, int flags);
00110
00111
00116 void
00117 lumiera_file_delete (LumieraFile self);
00118
00119
00130 int
00131 lumiera_file_handle_acquire (LumieraFile self);
00132
00133
00138 void
00139 lumiera_file_handle_release (LumieraFile self);
00140
00141
00148 LumieraMMapings
00149 lumiera_file_mmapings (LumieraFile self);
00150
00151
00158 size_t
00159 lumiera_file_chunksize_set (LumieraFile self, size_t chunksize);
00160
00161
00166 size_t
00167 lumiera_file_chunksize_get (LumieraFile self);
00168
00169 #endif
00170