110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @file op_abi.h
310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * This file contains a simple C interface to the ABI-describing functionality,
410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * the majority of which is implemented in C++. this is the file which is
510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * intended for use in files outside the /libabi directory.
610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Copyright 2002 OProfile authors
810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Read the file COPYING
910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
1010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author Graydon Hoare
1110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author Philippe Elie
1210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
1310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifndef OP_ABI_H
1510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OP_ABI_H
1610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectstruct op_abi_entry {
1810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	char const * name;
1910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	/// offset or size of the named entry
2010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	int offset;
2110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project};
2210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifdef __cplusplus
2410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectextern "C" {
2510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif
2610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/// return array is terminated by a NULL entry in name field
2810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectstruct op_abi_entry const * get_abi(void);
2910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/// return non zero if the abi is little endian
3110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectint op_little_endian(void);
3210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
3410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Write current abi to file.
3510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * return 1 on success, 0 on failure
3610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
3710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectint op_write_abi_to_file(char const * abi_file);
3810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifdef __cplusplus
4010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project}
4110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif
4210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
4310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif // OP_ABI_H
44