Added file removal function to the CFS API. Only cfs-coffee and cfs-posix
implements this, whereas the others just return -1.
This commit is contained in:
parent
3b8f6af71c
commit
15e8675ab9
7 changed files with 50 additions and 20 deletions
|
@ -766,18 +766,19 @@ find_next_record(struct file_desc *fdp, coffee_page_t log_page,
|
|||
uint16_t batch_size;
|
||||
|
||||
log_record = log_records;
|
||||
for(processed = 0; processed < log_records;) {
|
||||
for(processed = 0; processed < log_records; processed += batch_size) {
|
||||
batch_size = log_records - processed >= preferred_batch_size ?
|
||||
preferred_batch_size : log_records - processed;
|
||||
|
||||
COFFEE_READ(&indices, batch_size * sizeof(indices[0]),
|
||||
ABS_OFFSET(log_page, processed * sizeof(indices[0])));
|
||||
for(i = 0; i < batch_size && indices[i] != 0; i++);
|
||||
log_record = i;
|
||||
|
||||
if(log_record < batch_size) {
|
||||
log_record += processed;
|
||||
break;
|
||||
}
|
||||
processed += batch_size;
|
||||
}
|
||||
} else {
|
||||
log_record = fdp->next_log_record;
|
||||
|
@ -944,10 +945,17 @@ cfs_seek(int fd, unsigned offset)
|
|||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int
|
||||
cfs_coffee_remove(const char *name)
|
||||
cfs_remove(const char *name)
|
||||
{
|
||||
int page;
|
||||
|
||||
/*
|
||||
* Coffee removes files by marking them as obsolete. The space
|
||||
* is not guaranteed to be reclaimed immediately, but must be
|
||||
* sweeped by the garbage collector. The garbage collector is
|
||||
* called once a file reservation request cannot be granted.
|
||||
*/
|
||||
|
||||
page = find_file(name);
|
||||
if(page < 0) {
|
||||
return -1;
|
||||
|
|
|
@ -48,18 +48,6 @@
|
|||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Remove a file.
|
||||
* \param name The filename.
|
||||
* \return 0 on success, -1 on failure.
|
||||
*
|
||||
* Coffee removes files by marking them as obsolete. Therefore, the
|
||||
* space is not guaranteed to be reclaimed immediately, but must be
|
||||
* sweeped by the garbage collector. The garbage collector is called
|
||||
* once a file reservation request cannot be granted.
|
||||
*/
|
||||
int cfs_coffee_remove(const char *name);
|
||||
|
||||
/**
|
||||
* \brief Reserve space for a file.
|
||||
* \param name The filename.
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-eeprom.c,v 1.7 2008/01/24 13:08:35 adamdunkels Exp $
|
||||
* $Id: cfs-eeprom.c,v 1.8 2008/11/24 10:56:55 nvt-se Exp $
|
||||
*/
|
||||
|
||||
#include "cfs/cfs.h"
|
||||
|
@ -117,6 +117,12 @@ cfs_seek(int f, unsigned int o)
|
|||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int
|
||||
cfs_remove(const char *name)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int
|
||||
cfs_opendir(struct cfs_dir *p, const char *n)
|
||||
{
|
||||
return -1;
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-posix.c,v 1.11 2008/07/06 11:08:07 oliverschmidt Exp $
|
||||
* $Id: cfs-posix.c,v 1.12 2008/11/24 10:56:55 nvt-se Exp $
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
@ -90,3 +90,9 @@ cfs_seek(int f, unsigned int o)
|
|||
return lseek(f, o, SEEK_SET);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int
|
||||
cfs_remove(const char *name)
|
||||
{
|
||||
return remove(name);
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-ram.c,v 1.8 2008/01/24 23:07:05 adamdunkels Exp $
|
||||
* $Id: cfs-ram.c,v 1.9 2008/11/24 10:56:55 nvt-se Exp $
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
@ -142,6 +142,12 @@ cfs_seek(int f, unsigned int o)
|
|||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int
|
||||
cfs_remove(const char *name)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int
|
||||
cfs_opendir(struct cfs_dir *p, const char *n)
|
||||
{
|
||||
return -1;
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs-xmem.c,v 1.8 2008/01/24 13:08:35 adamdunkels Exp $
|
||||
* $Id: cfs-xmem.c,v 1.9 2008/11/24 10:56:55 nvt-se Exp $
|
||||
*/
|
||||
|
||||
#include "cfs/cfs.h"
|
||||
|
@ -148,6 +148,12 @@ cfs_seek(int f, unsigned int o)
|
|||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int
|
||||
cfs_remove(const char *name)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int
|
||||
cfs_opendir(struct cfs_dir *p, const char *n)
|
||||
{
|
||||
return -1;
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: cfs.h,v 1.11 2008/01/24 13:08:35 adamdunkels Exp $
|
||||
* $Id: cfs.h,v 1.12 2008/11/24 10:56:55 nvt-se Exp $
|
||||
*/
|
||||
#ifndef __CFS_H__
|
||||
#define __CFS_H__
|
||||
|
@ -190,6 +190,16 @@ CCIF int cfs_write(int fd, const void *buf, unsigned int len);
|
|||
CCIF unsigned int cfs_seek(int fd, unsigned int offset);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Remove a file.
|
||||
* \param name The name of the file.
|
||||
* \retval 0 If the file was removed.
|
||||
* \return -1 If the file could not be removed or if it doesn't exist.
|
||||
*/
|
||||
#ifndef cfs_remove
|
||||
CCIF int cfs_remove(const char *name);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Open a directory for reading directory entries.
|
||||
* \param dirp A pointer to a struct cfs_dir that is filled in by the function.
|
||||
|
|
Loading…
Reference in a new issue