cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ntfs.h (4344B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * ntfs.h - Defines for NTFS Linux kernel driver.
      4 *
      5 * Copyright (c) 2001-2014 Anton Altaparmakov and Tuxera Inc.
      6 * Copyright (C) 2002 Richard Russon
      7 */
      8
      9#ifndef _LINUX_NTFS_H
     10#define _LINUX_NTFS_H
     11
     12#include <linux/stddef.h>
     13#include <linux/kernel.h>
     14#include <linux/module.h>
     15#include <linux/compiler.h>
     16#include <linux/fs.h>
     17#include <linux/nls.h>
     18#include <linux/smp.h>
     19#include <linux/pagemap.h>
     20
     21#include "types.h"
     22#include "volume.h"
     23#include "layout.h"
     24
     25typedef enum {
     26	NTFS_BLOCK_SIZE		= 512,
     27	NTFS_BLOCK_SIZE_BITS	= 9,
     28	NTFS_SB_MAGIC		= 0x5346544e,	/* 'NTFS' */
     29	NTFS_MAX_NAME_LEN	= 255,
     30	NTFS_MAX_ATTR_NAME_LEN	= 255,
     31	NTFS_MAX_CLUSTER_SIZE	= 64 * 1024,	/* 64kiB */
     32	NTFS_MAX_PAGES_PER_CLUSTER = NTFS_MAX_CLUSTER_SIZE / PAGE_SIZE,
     33} NTFS_CONSTANTS;
     34
     35/* Global variables. */
     36
     37/* Slab caches (from super.c). */
     38extern struct kmem_cache *ntfs_name_cache;
     39extern struct kmem_cache *ntfs_inode_cache;
     40extern struct kmem_cache *ntfs_big_inode_cache;
     41extern struct kmem_cache *ntfs_attr_ctx_cache;
     42extern struct kmem_cache *ntfs_index_ctx_cache;
     43
     44/* The various operations structs defined throughout the driver files. */
     45extern const struct address_space_operations ntfs_normal_aops;
     46extern const struct address_space_operations ntfs_compressed_aops;
     47extern const struct address_space_operations ntfs_mst_aops;
     48
     49extern const struct  file_operations ntfs_file_ops;
     50extern const struct inode_operations ntfs_file_inode_ops;
     51
     52extern const struct  file_operations ntfs_dir_ops;
     53extern const struct inode_operations ntfs_dir_inode_ops;
     54
     55extern const struct  file_operations ntfs_empty_file_ops;
     56extern const struct inode_operations ntfs_empty_inode_ops;
     57
     58extern const struct export_operations ntfs_export_ops;
     59
     60/**
     61 * NTFS_SB - return the ntfs volume given a vfs super block
     62 * @sb:		VFS super block
     63 *
     64 * NTFS_SB() returns the ntfs volume associated with the VFS super block @sb.
     65 */
     66static inline ntfs_volume *NTFS_SB(struct super_block *sb)
     67{
     68	return sb->s_fs_info;
     69}
     70
     71/* Declarations of functions and global variables. */
     72
     73/* From fs/ntfs/compress.c */
     74extern int ntfs_read_compressed_block(struct page *page);
     75extern int allocate_compression_buffers(void);
     76extern void free_compression_buffers(void);
     77
     78/* From fs/ntfs/super.c */
     79#define default_upcase_len 0x10000
     80extern struct mutex ntfs_lock;
     81
     82typedef struct {
     83	int val;
     84	char *str;
     85} option_t;
     86extern const option_t on_errors_arr[];
     87
     88/* From fs/ntfs/mst.c */
     89extern int post_read_mst_fixup(NTFS_RECORD *b, const u32 size);
     90extern int pre_write_mst_fixup(NTFS_RECORD *b, const u32 size);
     91extern void post_write_mst_fixup(NTFS_RECORD *b);
     92
     93/* From fs/ntfs/unistr.c */
     94extern bool ntfs_are_names_equal(const ntfschar *s1, size_t s1_len,
     95		const ntfschar *s2, size_t s2_len,
     96		const IGNORE_CASE_BOOL ic,
     97		const ntfschar *upcase, const u32 upcase_size);
     98extern int ntfs_collate_names(const ntfschar *name1, const u32 name1_len,
     99		const ntfschar *name2, const u32 name2_len,
    100		const int err_val, const IGNORE_CASE_BOOL ic,
    101		const ntfschar *upcase, const u32 upcase_len);
    102extern int ntfs_ucsncmp(const ntfschar *s1, const ntfschar *s2, size_t n);
    103extern int ntfs_ucsncasecmp(const ntfschar *s1, const ntfschar *s2, size_t n,
    104		const ntfschar *upcase, const u32 upcase_size);
    105extern void ntfs_upcase_name(ntfschar *name, u32 name_len,
    106		const ntfschar *upcase, const u32 upcase_len);
    107extern void ntfs_file_upcase_value(FILE_NAME_ATTR *file_name_attr,
    108		const ntfschar *upcase, const u32 upcase_len);
    109extern int ntfs_file_compare_values(FILE_NAME_ATTR *file_name_attr1,
    110		FILE_NAME_ATTR *file_name_attr2,
    111		const int err_val, const IGNORE_CASE_BOOL ic,
    112		const ntfschar *upcase, const u32 upcase_len);
    113extern int ntfs_nlstoucs(const ntfs_volume *vol, const char *ins,
    114		const int ins_len, ntfschar **outs);
    115extern int ntfs_ucstonls(const ntfs_volume *vol, const ntfschar *ins,
    116		const int ins_len, unsigned char **outs, int outs_len);
    117
    118/* From fs/ntfs/upcase.c */
    119extern ntfschar *generate_default_upcase(void);
    120
    121static inline int ntfs_ffs(int x)
    122{
    123	int r = 1;
    124
    125	if (!x)
    126		return 0;
    127	if (!(x & 0xffff)) {
    128		x >>= 16;
    129		r += 16;
    130	}
    131	if (!(x & 0xff)) {
    132		x >>= 8;
    133		r += 8;
    134	}
    135	if (!(x & 0xf)) {
    136		x >>= 4;
    137		r += 4;
    138	}
    139	if (!(x & 3)) {
    140		x >>= 2;
    141		r += 2;
    142	}
    143	if (!(x & 1)) {
    144		x >>= 1;
    145		r += 1;
    146	}
    147	return r;
    148}
    149
    150#endif /* _LINUX_NTFS_H */