Home | History | Annotate | Download | only in nacl_io
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "nacl_io/filesystem.h"
      6 
      7 #include <errno.h>
      8 #include <fcntl.h>
      9 #include <stdarg.h>
     10 
     11 #include <string>
     12 
     13 #include "nacl_io/dir_node.h"
     14 #include "nacl_io/node.h"
     15 #include "nacl_io/osstat.h"
     16 #include "nacl_io/path.h"
     17 #include "sdk_util/auto_lock.h"
     18 #include "sdk_util/ref_object.h"
     19 
     20 #if defined(WIN32)
     21 #include <windows.h>
     22 #endif
     23 
     24 namespace nacl_io {
     25 
     26 Filesystem::Filesystem() : dev_(0) {
     27 }
     28 
     29 Filesystem::~Filesystem() {
     30 }
     31 
     32 Error Filesystem::Init(const FsInitArgs& args) {
     33   dev_ = args.dev;
     34   ppapi_ = args.ppapi;
     35   return 0;
     36 }
     37 
     38 void Filesystem::Destroy() {
     39 }
     40 
     41 Error Filesystem::OpenResource(const Path& path, ScopedNode* out_node) {
     42   out_node->reset(NULL);
     43   return EINVAL;
     44 }
     45 
     46 void Filesystem::OnNodeCreated(Node* node) {
     47   node->stat_.st_ino = inode_pool_.Acquire();
     48   node->stat_.st_dev = dev_;
     49 }
     50 
     51 void Filesystem::OnNodeDestroyed(Node* node) {
     52   if (node->stat_.st_ino)
     53     inode_pool_.Release(node->stat_.st_ino);
     54 }
     55 
     56 Error Filesystem::Filesystem_VIoctl(int request, va_list args) {
     57   return EINVAL;
     58 }
     59 
     60 Error Filesystem::Filesystem_Ioctl(int request, ...) {
     61   va_list args;
     62   va_start(args, request);
     63   Error error = Filesystem_VIoctl(request, args);
     64   va_end(args);
     65   return error;
     66 }
     67 
     68 }  // namespace nacl_io
     69