1 /*
2  * inode.h -  Header file for inode.c
3  *
4  * Copyright (C) 1997 R�gis Duchesne
5  * Copyright (C) 1998 Martin von L�wis
6  * Copyright (c) 2001 Anton Altparmakov (AIA)
7  */
8 
9 ntfs_attribute *ntfs_find_attr(ntfs_inode *ino, int type, char *name);
10 
11 int ntfs_read_attr(ntfs_inode *ino, int type, char *name, __s64 offset,
12 		ntfs_io *buf);
13 
14 int ntfs_write_attr(ntfs_inode *ino, int type, char *name, __s64 offset,
15 		ntfs_io *buf);
16 
17 int ntfs_init_inode(ntfs_inode *ino, ntfs_volume *vol, int inum);
18 
19 void ntfs_clear_inode(ntfs_inode *ino);
20 
21 int ntfs_check_mft_record(ntfs_volume *vol, char *record);
22 
23 int ntfs_alloc_inode(ntfs_inode *dir, ntfs_inode *result, const char *filename,
24 		int namelen, ntfs_u32);
25 
26 int ntfs_alloc_file(ntfs_inode *dir, ntfs_inode *result, char *filename,
27 		int namelen);
28 
29 int ntfs_update_inode(ntfs_inode *ino);
30 
31 int ntfs_vcn_to_lcn(ntfs_inode *ino, int vcn);
32 
33 int ntfs_readwrite_attr(ntfs_inode *ino, ntfs_attribute *attr, __s64 offset,
34 		ntfs_io *dest);
35 
36 int ntfs_allocate_attr_number(ntfs_inode *ino, int *result);
37 
38 int ntfs_decompress_run(unsigned char **data, int *length,
39 		ntfs_cluster_t *cluster, int *ctype);
40 
41 void ntfs_decompress(unsigned char *dest, unsigned char *src, ntfs_size_t l);
42 
43 int splice_runlists(ntfs_runlist **rl1, int *r1len, const ntfs_runlist *rl2,
44 		int r2len);
45 
46 /*
47  * NOTE: Neither of the ntfs_*_bit functions are atomic! But we don't need
48  * them atomic at present as we never operate on shared/cached bitmaps.
49  */
ntfs_test_and_set_bit(unsigned char * byte,const int bit)50 static __inline__ int ntfs_test_and_set_bit(unsigned char *byte, const int bit)
51 {
52 	unsigned char *ptr = byte + (bit >> 3);
53 	int b = 1 << (bit & 7);
54 	int oldbit = *ptr & b ? 1 : 0;
55 	*ptr |= b;
56 	return oldbit;
57 }
58 
59