00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef LUMIERA_FILEDESCRIPTOR_H
00023 #define LUMIERA_FILEDESCRIPTOR_H
00024
00025 #include "lib/mutex.h"
00026 #include "lib/psplay.h"
00027 #include "lib/llist.h"
00028
00029
00030 #include <sys/types.h>
00031 #include <sys/stat.h>
00032 #include <fcntl.h>
00033
00034 typedef struct lumiera_filedescriptor_struct lumiera_filedescriptor;
00035 typedef lumiera_filedescriptor* LumieraFiledescriptor;
00036
00037
00038 #include "backend/filehandle.h"
00039 #include "backend/file.h"
00040 #include "backend/mmapings.h"
00041
00048 struct lumiera_filedescriptor_struct
00049 {
00051 psplaynode node;
00052
00054 struct stat stat;
00055
00060 off_t realsize;
00061
00063 int flags;
00064
00066 lumiera_mutex lock;
00067
00069 LumieraFilehandle handle;
00070
00072 LumieraMMapings mmapings;
00073
00075 llist files;
00076 };
00077
00084 void
00085 lumiera_filedescriptor_registry_init (void);
00086
00091 void
00092 lumiera_filedescriptor_registry_destroy (void);
00093
00094
00101 LumieraFiledescriptor
00102 lumiera_filedescriptor_acquire (const char* name, int flags, LList filenode);
00103
00104
00110 void
00111 lumiera_filedescriptor_release (LumieraFiledescriptor self, const char* name, LList filenode);
00112
00113 int
00114 lumiera_filedescriptor_handle_acquire (LumieraFiledescriptor self);
00115
00116 void
00117 lumiera_filedescriptor_handle_release (LumieraFiledescriptor self);
00118
00119 const char*
00120 lumiera_filedescriptor_name (LumieraFiledescriptor self);
00121
00122 int
00123 lumiera_filedescriptor_flags (LumieraFiledescriptor self);
00124
00125 int
00126 lumiera_filedescriptor_samestat (LumieraFiledescriptor self, struct stat* stat);
00127
00133 LumieraFiledescriptor
00134 lumiera_filedescriptor_new (LumieraFiledescriptor template);
00135
00141 void
00142 lumiera_filedescriptor_delete (LumieraFiledescriptor self, const char* name);
00143
00144 #endif