kern_return_t trivfs_S_file_sync (struct trivfs_protid *cred, mach_port_t reply, mach_msg_type_name_t reply_type, int wait, int omitmeta) { return cred ? file_sync (cred->realnode, wait, omitmeta) : EOPNOTSUPP; }
void file_close(file_handle_t * handle) { file_sync(handle); --open_handles[handle->file_id]; free(handle); }
int sys_fsync(int fd) { struct file *file = fd_get_file(fd); if (!file) return -1; file_sync(file); put_file(file); return 0; }
kern_return_t trivfs_S_fsys_syncfs (struct trivfs_control *cntl, mach_port_t reply, mach_msg_type_name_t replytype, int wait, int dochildren) { return cntl ? file_sync (cntl->underlying, wait, 0) : EOPNOTSUPP; }
/* The function returns the number of bytes written to the file. */ int open_file_and_write_buffer(char *filename_and_path, const char *buffer, int buffer_size) { struct file* input_file_ptr; int ret_val = 0; pr_info("SRUK ----------- %s -- %d", __FUNCTION__, __LINE__); input_file_ptr = file_open(filename_and_path, O_WRONLY, 0); if (input_file_ptr != NULL) { pr_info("SRUK ----------- %s -- %d -- %s -- %d", __FUNCTION__, __LINE__, buffer, buffer_size); ret_val = file_write(input_file_ptr, 0, (unsigned char *)buffer, buffer_size); file_sync(input_file_ptr); file_close(input_file_ptr); } pr_info("SRUK ----------- %s -- %d -- ret_val = %d ", __FUNCTION__, __LINE__ , ret_val); return ret_val; }
int main(int argc, char *argv[]) { char *src_filename = NULL; char *dest_filename = NULL; char chunk_filename[] = "./chunk_src"; char delta_filename[] = "./delta_dest"; int ret = 0, chunk_algo; if (argc < 4) { fprintf(stderr, "%s SOURCE DEST CHUNK_ALGO(0 = FSP | 1 = CDC | 2 = SBC)\n", argv[0]); exit(0); } src_filename = argv[1]; dest_filename = argv[2]; chunk_algo = atoi(argv[3]); ret = file_chunk(src_filename, chunk_filename, chunk_algo); if (ret == -1) { fprintf(stderr, "file chunk failed\n"); exit(1); } ret = file_delta(dest_filename, chunk_filename, delta_filename, chunk_algo); if (ret == -1) { fprintf(stderr, "file delta failed\n"); exit(0); } ret = file_sync(src_filename, delta_filename); if (ret == -1) { fprintf(stderr, "file sync failed\n"); exit(0); } return 0; }
static int __init hello_init(void) { int i, total, countUsedPage; struct page* curPage; char path[] = "./hash.bin"; printk(KERN_INFO "Starting module. You have %lu pages to play with!\n", get_num_physpages()); logFile = file_open(path, O_CREAT | O_WRONLY, S_IRWXU); curPage = pfn_to_page(node_data[0]->node_start_pfn); total = get_num_physpages(); countUsedPage = 0; for(i=0; i<total; i++) { curPage = pfn_to_page(node_data[0]->node_start_pfn + i); if(page_count(curPage) > 0) { write_hash_to_file(countUsedPage, kmap(curPage)); countUsedPage++; } } file_sync(logFile); file_close(logFile); printk(KERN_INFO "Save the world! countUsedPage:%d\n", countUsedPage); return 0; }