VirtualBox

source: vbox/trunk/src/VBox/Additions/linux/sharedfolders/vfsmod.h@ 7266

Last change on this file since 7266 was 6054, checked in by vboxsync, 17 years ago

vboxvfs: implemented readfile()

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.8 KB
Line 
1/** @file
2 *
3 * vboxvfs -- VirtualBox Guest Additions for Linux
4 */
5
6/*
7 * Copyright (C) 2006-2007 innotek GmbH
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#ifndef VFSMOD_H
19#define VFSMOD_H
20
21#include "the-linux-kernel.h"
22#include "version-generated.h"
23
24#include "VBoxCalls.h"
25#include "vbsfmount.h"
26
27/* structs */
28struct sf_glob_info {
29 VBSFMAP map;
30 struct nls_table *nls;
31 int ttl;
32 int uid;
33 int gid;
34};
35
36struct sf_inode_info {
37 SHFLSTRING *path;
38 int force_restat;
39};
40
41struct sf_dir_info {
42 struct list_head info_list;
43};
44
45struct sf_dir_buf {
46 size_t nb_entries;
47 size_t free_bytes;
48 size_t used_bytes;
49 void *buf;
50 struct list_head head;
51};
52
53struct sf_reg_info {
54 SHFLHANDLE handle;
55};
56
57/* globals */
58extern VBSFCLIENT client_handle;
59
60/* forward declarations */
61extern struct inode_operations sf_dir_iops;
62extern struct inode_operations sf_reg_iops;
63extern struct file_operations sf_dir_fops;
64extern struct file_operations sf_reg_fops;
65extern struct dentry_operations sf_dentry_ops;
66extern struct address_space_operations sf_reg_aops;
67
68extern void
69sf_init_inode (struct sf_glob_info *sf_g, struct inode *inode,
70 RTFSOBJINFO *info);
71extern int
72sf_stat (const char *caller, struct sf_glob_info *sf_g,
73 SHFLSTRING *path, RTFSOBJINFO *result, int ok_to_fail);
74extern int
75sf_inode_revalidate (struct dentry *dentry);
76#if LINUX_VERSION_CODE >= KERNEL_VERSION (2, 6, 0)
77extern int
78sf_getattr (struct vfsmount *mnt, struct dentry *dentry, struct kstat *kstat);
79#endif
80extern int
81sf_path_from_dentry (const char *caller, struct sf_glob_info *sf_g,
82 struct sf_inode_info *sf_i, struct dentry *dentry,
83 SHFLSTRING **result);
84extern int
85sf_nlscpy (struct sf_glob_info *sf_g,
86 char *name, size_t name_bound_len,
87 const unsigned char *utf8_name, size_t utf8_len);
88extern void
89sf_dir_info_free (struct sf_dir_info *p);
90extern struct sf_dir_info *
91sf_dir_info_alloc (void);
92extern int
93sf_dir_read_all (struct sf_glob_info *sf_g, struct sf_inode_info *sf_i,
94 struct sf_dir_info *sf_d, SHFLHANDLE handle);
95
96#if LINUX_VERSION_CODE < KERNEL_VERSION (2, 6, 0)
97#define STRUCT_STATFS struct statfs
98#else
99#define STRUCT_STATFS struct kstatfs
100#endif
101int sf_get_volume_info(struct super_block *sb,STRUCT_STATFS *stat);
102
103#ifdef ALIGN
104#undef ALIGN
105#endif
106
107#define CMC_API __attribute__ ((cdecl, regparm (0)))
108
109#define TRACE() LogFunc (("tracepoint\n"))
110
111/* Following casts are here to prevent assignment of void * to
112 pointers of arbitrary type */
113#if LINUX_VERSION_CODE < KERNEL_VERSION (2, 6, 0)
114#define GET_GLOB_INFO(sb) ((struct sf_glob_info *) (sb)->u.generic_sbp)
115#define SET_GLOB_INFO(sb, sf_g) (sb)->u.generic_sbp = sf_g
116#else
117#define GET_GLOB_INFO(sb) ((struct sf_glob_info *) (sb)->s_fs_info)
118#define SET_GLOB_INFO(sb, sf_g) (sb)->s_fs_info = sf_g
119#endif
120
121#if LINUX_VERSION_CODE >= KERNEL_VERSION (2, 6, 19) || defined(KERNEL_FC6)
122/* FC6 kernel 2.6.18, vanilla kernel 2.6.19+ */
123#define GET_INODE_INFO(i) ((struct sf_inode_info *) (i)->i_private)
124#define SET_INODE_INFO(i, sf_i) (i)->i_private = sf_i
125#else
126/* vanilla kernel up to 2.6.18 */
127#define GET_INODE_INFO(i) ((struct sf_inode_info *) (i)->u.generic_ip)
128#define SET_INODE_INFO(i, sf_i) (i)->u.generic_ip = sf_i
129#endif
130
131#endif /* vfsmod.h */
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette