1*6777b538SAndroid Build Coastguard Worker /* third_party/ashmem/ashmem.h 2*6777b538SAndroid Build Coastguard Worker ** 3*6777b538SAndroid Build Coastguard Worker ** Copyright 2008 The Android Open Source Project 4*6777b538SAndroid Build Coastguard Worker ** 5*6777b538SAndroid Build Coastguard Worker ** This file is dual licensed. It may be redistributed and/or modified 6*6777b538SAndroid Build Coastguard Worker ** under the terms of the Apache 2.0 License OR version 2 of the GNU 7*6777b538SAndroid Build Coastguard Worker ** General Public License. 8*6777b538SAndroid Build Coastguard Worker */ 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker #ifndef _THIRD_PARTY_ASHMEM_H 11*6777b538SAndroid Build Coastguard Worker #define _THIRD_PARTY_ASHMEM_H 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker #include <stddef.h> 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker #ifdef __cplusplus 16*6777b538SAndroid Build Coastguard Worker extern "C" { 17*6777b538SAndroid Build Coastguard Worker #endif 18*6777b538SAndroid Build Coastguard Worker 19*6777b538SAndroid Build Coastguard Worker /* Returns true if the ashmem device is supported on this device. 20*6777b538SAndroid Build Coastguard Worker * Not that even if the device is not supported, 21*6777b538SAndroid Build Coastguard Worker * ashmem_{create,set_prot,get_prot,get_size}_region() will still work 22*6777b538SAndroid Build Coastguard Worker * because they will use the ASharedMemory functions from libandroid.so 23*6777b538SAndroid Build Coastguard Worker * instead. But ashmem_{pin,unpin}_region() will be no-ops. 24*6777b538SAndroid Build Coastguard Worker */ 25*6777b538SAndroid Build Coastguard Worker int ashmem_device_is_supported(void); 26*6777b538SAndroid Build Coastguard Worker 27*6777b538SAndroid Build Coastguard Worker int ashmem_create_region(const char *name, size_t size); 28*6777b538SAndroid Build Coastguard Worker int ashmem_set_prot_region(int fd, int prot); 29*6777b538SAndroid Build Coastguard Worker int ashmem_get_prot_region(int fd); 30*6777b538SAndroid Build Coastguard Worker int ashmem_pin_region(int fd, size_t offset, size_t len); 31*6777b538SAndroid Build Coastguard Worker int ashmem_unpin_region(int fd, size_t offset, size_t len); 32*6777b538SAndroid Build Coastguard Worker int ashmem_get_size_region(int fd); 33*6777b538SAndroid Build Coastguard Worker 34*6777b538SAndroid Build Coastguard Worker #ifdef __cplusplus 35*6777b538SAndroid Build Coastguard Worker } 36*6777b538SAndroid Build Coastguard Worker #endif 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker #ifndef __ASHMEMIOC /* in case someone included <linux/ashmem.h> too */ 39*6777b538SAndroid Build Coastguard Worker 40*6777b538SAndroid Build Coastguard Worker #define ASHMEM_NAME_LEN 256 41*6777b538SAndroid Build Coastguard Worker 42*6777b538SAndroid Build Coastguard Worker #define ASHMEM_NAME_DEF "dev/ashmem" 43*6777b538SAndroid Build Coastguard Worker 44*6777b538SAndroid Build Coastguard Worker /* Return values from ASHMEM_PIN: Was the mapping purged while unpinned? */ 45*6777b538SAndroid Build Coastguard Worker #define ASHMEM_NOT_PURGED 0 46*6777b538SAndroid Build Coastguard Worker #define ASHMEM_WAS_PURGED 1 47*6777b538SAndroid Build Coastguard Worker 48*6777b538SAndroid Build Coastguard Worker /* Return values from ASHMEM_UNPIN: Is the mapping now pinned or unpinned? */ 49*6777b538SAndroid Build Coastguard Worker #define ASHMEM_IS_UNPINNED 0 50*6777b538SAndroid Build Coastguard Worker #define ASHMEM_IS_PINNED 1 51*6777b538SAndroid Build Coastguard Worker 52*6777b538SAndroid Build Coastguard Worker #endif /* ! __ASHMEMIOC */ 53*6777b538SAndroid Build Coastguard Worker 54*6777b538SAndroid Build Coastguard Worker #endif /* _THIRD_PARTY_ASHMEM_H */ 55