Exemplo n.º 1
0
int sp_mapunlink(spfile *f) {
#ifdef _MSC_VER
    if (f->map) {
        sp_mapcut(f);
        if (f->map)
            sp_unmap(f);
    }
#endif
    return sp_filerm(f->file);
}
Exemplo n.º 2
0
int sp_mapclose(spfile *f)
{
	int rc = sp_mapcut(f);
	if (spunlikely(rc == -1))
		return -1;
	if (f->map) {
		rc = sp_unmap(f);
		if (spunlikely(rc == -1))
			return -1;
	}
	return sp_fileclose(f);
}
Exemplo n.º 3
0
int sp_mapensure(spfile *f, uint64_t size, float grow)
{
    if (splikely((f->used + size) < f->size))
        return 0;
    int rc = sp_unmap(f);
    if (spunlikely(rc == -1))
        return -1;
    long double nsz = f->size * grow;
    if (spunlikely(nsz < size))
        nsz = size;
    rc = sp_mapresize(f, (size_t)nsz);
    if (spunlikely(rc == -1))
        return -1;
    return sp_map(f, PROT_READ | PROT_WRITE);
}
Exemplo n.º 4
0
static inline int
sp_mapcut(spfile *f)
{
    if (f->creat == 0)
        return 0;
    int rc = sp_mapsync(f);
    if (spunlikely(rc == -1))
        return -1;
    rc = sp_unmap(f);
    if (spunlikely(rc == -1))
        return -1;
    rc = sp_mapresize(f, f->used);
    if (spunlikely(rc == -1))
        return -1;
    return 0;
}
Exemplo n.º 5
0
int sp_mapunmap(spfile *f) {
    return sp_unmap(f);
}