forked from 0ad/0ad
janwas
44901d38b9
FILE_CACHE_BLOCK flag used more safely (copied in afile_read) add file_sector_size (set from sysdep code) documented and organized FileFlags moved publically visible file_buf* decls to file.h; add FileBufFlags file_buf_get: moved to file_io and renamed because it is not a part of the file_buf manager itself FILE_BLOCK_SIZE no longer exposed to users - it's an implementation detail. for alignment purposes, you should use file_sector_size (less wasteful) add page_aligned allocator (mmap) write buffers now allocated via file_buf_alloc(FB_FROM_HEAP) (avoids wasting cache space) append trace runs into the trace file (-> better input data for archive ordering) document lib_errors.h tex_load: add provision for file_flags, used by ogl_tex_load to prevent caching file data simulation, entitymanager: add perf measurements This was SVN commit r3725.
39 lines
1.2 KiB
C
39 lines
1.2 KiB
C
#include "file.h"
|
|
#include "file_cache.h"
|
|
#include "file_io.h"
|
|
|
|
#include "file_stats.h" // must come after file and file_cache
|
|
|
|
#include "compression.h"
|
|
#include "zip.h"
|
|
#include "archive.h"
|
|
|
|
#include "vfs.h"
|
|
#include "vfs_path.h"
|
|
#include "vfs_mount.h"
|
|
#include "vfs_tree.h"
|
|
|
|
#include "trace.h"
|
|
#include "vfs_optimizer.h"
|
|
|
|
const size_t AIO_SECTOR_SIZE = 512;
|
|
|
|
// block := power-of-two sized chunk of a file.
|
|
// all transfers are expanded to naturally aligned, whole blocks
|
|
// (this makes caching parts of files feasible; it is also much faster
|
|
// for some aio implementations, e.g. wposix).
|
|
//
|
|
// this is not exposed to users because it's an implementation detail and
|
|
// they shouldn't care.
|
|
//
|
|
// measurements show this value to yield best read throughput.
|
|
const size_t FILE_BLOCK_SIZE = 32*KiB;
|
|
|
|
// helper routine used by functions that call back to a FileIOCB.
|
|
//
|
|
// bytes_processed is 0 if return value != { ERR_OK, INFO_CB_CONTINUE }
|
|
// note: don't abort if = 0: zip callback may not actually
|
|
// output anything if passed very little data.
|
|
extern LibError file_io_call_back(const void* block, size_t size,
|
|
FileIOCB cb, uintptr_t ctx, size_t& bytes_processed);
|