mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 07:49:11 +03:00
bfcf4c574a
Summary: Move everything in the `facebook::eden::fusell` namespace to `facebook::eden` Reviewed By: chadaustin Differential Revision: D7314458 fbshipit-source-id: db56d3e5fb898235e1376ac76077cf780d9b4698
92 lines
2.4 KiB
C++
92 lines
2.4 KiB
C++
/*
|
|
* Copyright (c) 2016-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*
|
|
*/
|
|
#pragma once
|
|
#include <folly/futures/Future.h>
|
|
#include "eden/fs/fuse/BufVec.h"
|
|
#include "eden/fs/fuse/Dispatcher.h"
|
|
#include "eden/fs/fuse/PollHandle.h"
|
|
|
|
namespace facebook {
|
|
namespace eden {
|
|
|
|
class Dispatcher;
|
|
|
|
class FileHandleBase {
|
|
public:
|
|
virtual ~FileHandleBase();
|
|
|
|
/**
|
|
* Return the inode number.
|
|
* This is used in lieu of getattr() by the code that serializes
|
|
* the FileHandleMap. */
|
|
virtual InodeNumber getInodeNumber() = 0;
|
|
|
|
/**
|
|
* Get file attributes
|
|
*/
|
|
virtual folly::Future<Dispatcher::Attr> getattr() = 0;
|
|
|
|
/**
|
|
* Set file attributes
|
|
*
|
|
* In the 'attr' argument only members indicated by the 'to_set'
|
|
* bitmask contain valid values. Other members contain undefined
|
|
* values.
|
|
*
|
|
* @param attr the attributes
|
|
* @param to_set bit mask of attributes which should be set
|
|
*/
|
|
virtual folly::Future<Dispatcher::Attr> setattr(
|
|
const fuse_setattr_in& attr) = 0;
|
|
|
|
/* The result of an ioctl operation */
|
|
struct Ioctl {
|
|
int result;
|
|
BufVec buf;
|
|
};
|
|
|
|
/**
|
|
* Ioctl
|
|
*
|
|
* Only well-formed (restricted) ioctls are supported. These are ioctls
|
|
* that have the argument size encoded using _IOR, _IOW, _IOWR macros.
|
|
*
|
|
* @param arg is the argument passed in from userspace
|
|
* @param inputData is a copy of the arg data from userspace
|
|
* @param outputSize is the maximum size of the output data
|
|
*/
|
|
virtual folly::Future<Ioctl> ioctl(
|
|
int cmd,
|
|
const void* arg,
|
|
folly::ByteRange inputData,
|
|
size_t outputSize);
|
|
|
|
/**
|
|
* Poll for IO readiness
|
|
*
|
|
* Introduced in version 2.8
|
|
*
|
|
* Note: If ph is non-NULL, the client should notify
|
|
* when IO readiness events occur by calling
|
|
* ph->notify().
|
|
*
|
|
* Regardless of the number of times poll with a non-NULL ph
|
|
* is received, single notification is enough to clear all.
|
|
* Notifying more times incurs overhead but doesn't harm
|
|
* correctness.
|
|
*
|
|
* Return the poll(2) revents mask.
|
|
*/
|
|
virtual folly::Future<unsigned> poll(std::unique_ptr<PollHandle> ph);
|
|
};
|
|
|
|
} // namespace eden
|
|
} // namespace facebook
|