mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 20:42:23 +00:00

This code is useful for more things than just the packfile handling code. Factor it out so it can be reused. Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
65 lines
2.2 KiB
C
65 lines
2.2 KiB
C
/*
|
|
* This file is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License, version 2,
|
|
* as published by the Free Software Foundation.
|
|
*
|
|
* In addition to the permissions in the GNU General Public License,
|
|
* the authors give you unlimited permission to link the compiled
|
|
* version of this file into combinations with other programs,
|
|
* and to distribute those combinations without any restriction
|
|
* coming from the use of this file. (The General Public License
|
|
* restrictions do apply in other respects; for example, they cover
|
|
* modification of the file, and distribution when not linked into
|
|
* a combined executable.)
|
|
*
|
|
* This file is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; see the file COPYING. If not, write to
|
|
* the Free Software Foundation, 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef INCLUDE_mwindow__
|
|
#define INCLUDE_mwindow__
|
|
|
|
#include "map.h"
|
|
#include "vector.h"
|
|
#include "fileops.h"
|
|
|
|
typedef struct git_mwindow {
|
|
struct git_mwindow *next;
|
|
git_map window_map;
|
|
off_t offset;
|
|
unsigned int last_used;
|
|
unsigned int inuse_cnt;
|
|
} git_mwindow;
|
|
|
|
typedef struct git_mwindow_file {
|
|
git_mwindow *windows;
|
|
} git_mwindow_file;
|
|
|
|
typedef struct git_mwindow_ctl {
|
|
size_t mapped;
|
|
unsigned int open_windows;
|
|
size_t window_size; /* needs default value */
|
|
size_t mapped_limit; /* needs default value */
|
|
unsigned int mmap_calls;
|
|
unsigned int peak_open_windows;
|
|
size_t peak_mapped;
|
|
size_t used_ctr;
|
|
git_vector windowfiles;
|
|
} git_mwindow_ctl;
|
|
|
|
int git_mwindow_contains(git_mwindow *win, off_t offset);
|
|
void git_mwindow_free_all(git_mwindow_file *mwf);
|
|
unsigned char *git_mwindow_open(git_mwindow_file *mwf, git_mwindow **cursor, git_file fd, size_t size, off_t offset, int extra, unsigned int *left);
|
|
void git_mwindow_scan_lru(git_mwindow_file *mwf, git_mwindow **lru_w, git_mwindow **lru_l);
|
|
int git_mwindow_file_register(git_mwindow_file *mwf);
|
|
void git_mwindow_close(git_mwindow **w_cursor);
|
|
|
|
#endif
|