| Index: src/trusted/service_runtime/nacl_resource.h
|
| ===================================================================
|
| --- src/trusted/service_runtime/nacl_resource.h (revision 0)
|
| +++ src/trusted/service_runtime/nacl_resource.h (revision 0)
|
| @@ -0,0 +1,107 @@
|
| +/*
|
| + * Copyright (c) 2011 The Native Client Authors. All rights reserved.
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +
|
| +#ifndef NATIVE_CLIENT_SRC_TRUSTED_SERVICE_RUNTIME_NACL_RESOURCE_H_
|
| +#define NATIVE_CLIENT_SRC_TRUSTED_SERVICE_RUNTIME_NACL_RESOURCE_H_
|
| +
|
| +#include "native_client/src/include/nacl_base.h"
|
| +
|
| +EXTERN_C_BEGIN
|
| +
|
| +/*
|
| + * Pseudo device name for NACL_EXE_STD{OUT,ERR}.
|
| + */
|
| +#define NACL_RESOURCE_DEBUG_WARNING "DEBUG_ONLY:"
|
| +#define NACL_RESOURCE_FILE_PREFIX "file:"
|
| +#define NACL_RESOURCE_DEV_PREFIX "dev:"
|
| +#define NACL_RESOURCE_DEV_POSTMESSAGE_LOCATOR "//postmessage"
|
| +#define NACL_RESOURCE_DEV_POSTMESSAGE \
|
| + NACL_RESOURCE_DEV_PREFIX NACL_RESOURCE_DEV_POSTMESSAGE_LOCATOR
|
| +
|
| +struct NaClResource;
|
| +
|
| +struct NaClResourceSchemes {
|
| + char const *scheme_prefix;
|
| + int default_scheme;
|
| + /*
|
| + * |default_scheme| is a bool. If no scheme prefixes match, try
|
| + * Open with this. There should be only one default scheme per
|
| + * scheme_table.
|
| + */
|
| +
|
| + /*
|
| + * The reason to separate out these functions is to make resource
|
| + * namespace separation clearer. Files, which requires --no-sandbox
|
| + * to disable the outer sandbox, allow arbitrary paths for logging
|
| + * untrusted code output; pseudo-devices (for postmessage) is
|
| + * (currently) a namespace of one entry.
|
| + *
|
| + * |nacl_flags| should be NACL_ABI_ versions of |flags| and should
|
| + * be consistent. This is typically determined at compile time, but
|
| + * the utility NaClHostDescMapOpenFlags can be used to convert
|
| + * nacl_flags values to flags values.
|
| + *
|
| + * |mode| should be file access mode (if file, if O_CREAT, if appropriate).
|
| + */
|
| + struct NaClDesc *(*Open)(struct NaClResource *resource,
|
| + char const *resource_specifier_rest,
|
| + int nacl_flags,
|
| + int mode /* 0777 etc */,
|
| + int allow_debug /* bool */
|
| + );
|
| +};
|
| +
|
| +
|
| +struct NaClResource {
|
| + /*
|
| + * no vtbl with virtual dtor, since (for now) only object creator
|
| + * should dtor/delete, and there are no other virtual functions
|
| + * needed.
|
| + */
|
| + struct NaClResourceSchemes const *schemes;
|
| + size_t num_schemes;
|
| +};
|
| +
|
| +/*
|
| + * NaCLResourceOpen handles NACL_RESOURCE_DEBUG_WARNING_PREFIX checks
|
| + * (and stripping), NACL_RESOURCE_{FILE,DEV}_PREFIX dispatch.
|
| + *
|
| + * This function does not take a descriptor number to directly modify
|
| + * the descriptor array and require the caller to invoke NaClSetDesc,
|
| + * since the API allows other uses of the returned NaClDesc object
|
| + * than just for redirection.
|
| + */
|
| +struct NaClDesc *NaClResourceOpen(struct NaClResource *self,
|
| + char const *resource_locator,
|
| + int nacl_flags,
|
| + int mode);
|
| +
|
| +/*
|
| + * Subclasses can expand on the NaClResource base class, e.g., add
|
| + * startup phase information so that the Open functions can get the
|
| + * NaClApp pointer, etc. The sole base class member function,
|
| + * NaClResourceOpen, is unaware of startup phases and relies on the
|
| + * scheme table's Open function to do the right thing.
|
| + */
|
| +struct NaClResourceNaClApp {
|
| + struct NaClResource base;
|
| + struct NaClApp *nap;
|
| +};
|
| +
|
| +int NaClResourceNaClAppCtor(struct NaClResourceNaClApp *self,
|
| + struct NaClResourceSchemes const *scheme_tbl,
|
| + size_t num_schemes,
|
| + struct NaClApp *nap);
|
| +
|
| +/*
|
| + * Invoke Ctor with standard resource schemes.
|
| + */
|
| +int NaClResourceNaClAppInit(struct NaClResourceNaClApp *self,
|
| + struct NaClApp *nap);
|
| +
|
| +EXTERN_C_END
|
| +
|
| +#endif
|
|
|
| Property changes on: src/trusted/service_runtime/nacl_resource.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|