diff options
Diffstat (limited to 'chromium/ppapi/api/ppb_file_mapping.idl')
-rw-r--r-- | chromium/ppapi/api/ppb_file_mapping.idl | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/chromium/ppapi/api/ppb_file_mapping.idl b/chromium/ppapi/api/ppb_file_mapping.idl new file mode 100644 index 00000000000..7037955d343 --- /dev/null +++ b/chromium/ppapi/api/ppb_file_mapping.idl @@ -0,0 +1,131 @@ +/* Copyright 2014 The Chromium Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +/** + * This file defines methods for mapping and unmapping files into and out of + * memory. + */ + +[generate_thunk] + +label Chrome { + [channel=dev] M34 = 0.1 +}; + +/** + * The PP_FileMapProtection values indicate the permissions requested for the + * file mapping. These should be used in a uint32_t bitfield. + */ +[assert_size(4)] +enum PP_FileMapProtection { + /** Requests read access to the mapped address. */ + PP_FILEMAPPROTECTION_READ = 1u << 0, + + /** Requests write access to the mapped address. */ + PP_FILEMAPPROTECTION_WRITE = 1u << 1 +}; + +/** + * The PP_FileMapFlags contain flag values for use with Map(). + */ +[assert_size(4)] +enum PP_FileMapFlags { + /** + * Requests a shared mapping. If this flag is set, changes written to the + * memory region will be reflected in the underlying file and will thus + * eventually be visible to other processes which have opened the file. The + * file may not actually be updated until Unmap() is called. This is only + * valid if the PPB_FileIO resource was opened with write permission. + */ + PP_FILEMAPFLAG_SHARED = 1u << 0, + + /** + * Requests a copy-on-write mapping. If this flag is set, changes are not + * written to the underlying file, but only in the memory of the process + * (copy-on-write). + */ + PP_FILEMAPFLAG_PRIVATE = 1u << 1, + + /** + * Forces Map() to map the file contents at the provided |address|. If Map() + * can not comply, Map() will fail. + */ + PP_FILEMAPFLAG_FIXED = 1u << 2 +}; + +/** + * PPB_FileMapping contains functions for mapping and unmapping files into and + * out of memory. + */ +[singleton] +interface PPB_FileMapping { + /** + * Map() maps the contents from an offset of the file into memory. + * + * @param[in] instance A <code>PP_Instance</code> identifying one instance of + * a module. + * @param[in] file_io A <code>PPB_FileIO</code> <code>PP_Resource</code> + * corresponding to the file that should be mapped in to memory. + * @param[in] length The number of bytes to map. + * @param[in] map_protection A bitfield containing values from + * <code>PP_FileMapProtection</code>, indicating what memory operations + * should be permitted on the mapped region. + * @param[in] map_flags A bitfield containing values from + * <code>PP_FileMapFlags</code>, providing options for the behavior of Map. + * If the region is to be writeable, then exactly one of + * <code>PP_FILEMAPFLAG_SHARED</code> or <code>PP_FILEMAPFLAG_PRIVATE</code> + * must be set. + * @param[in] offset The offset into the file. Must be a multiple of the + * Map page size as returned by GetMapPageSize(). + * @param[inout] address The value of <code>*address</code>, if non-NULL, + * will be used as a hint to determine where in memory the file should be + * mapped. If the value is NULL, the host operating system will choose + * <code>address</code>. Upon Map() completing, <code>*address</code> will + * contain the actual memory location at which the file was mapped. If the + * plugin provides a non-NULL <code>*address</code>, it must be a multiple of + * the map page size as returned by GetMapPageSize(). + * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon + * completion of Map(). + * + * @return An int32_t containing an error code from <code>pp_errors.h</code>. + */ + int32_t Map([in] PP_Instance instance, + [in] PP_Resource file_io, + [in] int64_t length, + [in] uint32_t map_protection, + [in] uint32_t map_flags, + [in] int64_t offset, + [inout] mem_ptr_t address, + [in] PP_CompletionCallback callback); + + /** + * Unmap() deletes the mapping of the specified address. The specified + * address must have been retrieved with Map(). + * @param[in] instance A <code>PP_Instance</code> identifying the instance. + * @param[in] address The starting address of the address in memory to + * be unmapped. + * @param[in] length The length of the region to unmap. + * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon + * completion of Unmap(). + * + * @return An int32_t containing an error code from <code>pp_errors.h</code>. + */ + int32_t Unmap([in] PP_Instance instance, + [in] mem_t address, + [in] int64_t length, + [in] PP_CompletionCallback callback); + + /** + * GetMapPageSize() retrieves the size of pages that Map() uses. + * + * @param[in] instance A <code>PP_Instance</code> identifying the instance. + * + * @return The size of pages that Map() uses. Returns 0 on failure. + */ + [on_failure=0] + int64_t GetMapPageSize(PP_Instance instance); +}; + |