Android Native代码中的status_t定义
定义在Android/system/core/include/utils/Errors.h中,小提示,Android代码中遇到的symbol,既不是Linux中提供的定义,使用source insight又找不到的情况下,可以去Android/system/core/include/目录找找,可能会有意想不到的收获哦。
定义如下:
1/*
2 * Copyright (C) 2007 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef ANDROID_ERRORS_H
18#define ANDROID_ERRORS_H
19
20#include <sys/types.h>
21#include <errno.h>
22
23namespace android {
24
25// use this type to return error codes
26#ifdef _WIN32
27typedef int status_t;
28#else
29typedef int32_t status_t;
30#endif
31
32/* the MS C runtime lacks a few error codes */
33
34/*
35 * Error codes.
36 * All error codes are negative values.
37 */
38
39// Win32 #defines NO_ERROR as well. It has the same value, so there's no
40// real conflict, though it's a bit awkward.
41#ifdef _WIN32
42# undef NO_ERROR
43#endif
44
45enum {
46 OK = 0, // Everything's swell.
47 NO_ERROR = 0, // No errors.
48
49 UNKNOWN_ERROR = (-2147483647-1), // INT32_MIN value
50
51 NO_MEMORY = -ENOMEM,
52 INVALID_OPERATION = -ENOSYS,
53 BAD_VALUE = -EINVAL,
54 BAD_TYPE = (UNKNOWN_ERROR + 1),
55 NAME_NOT_FOUND = -ENOENT,
56 PERMISSION_DENIED = -EPERM,
57 NO_INIT = -ENODEV,
58 ALREADY_EXISTS = -EEXIST,
59 DEAD_OBJECT = -EPIPE,
60 FAILED_TRANSACTION = (UNKNOWN_ERROR + 2),
61#if !defined(_WIN32)
62 BAD_INDEX = -EOVERFLOW,
63 NOT_ENOUGH_DATA = -ENODATA,
64 WOULD_BLOCK = -EWOULDBLOCK,
65 TIMED_OUT = -ETIMEDOUT,
66 UNKNOWN_TRANSACTION = -EBADMSG,
67#else
68 BAD_INDEX = -E2BIG,
69 NOT_ENOUGH_DATA = (UNKNOWN_ERROR + 3),
70 WOULD_BLOCK = (UNKNOWN_ERROR + 4),
71 TIMED_OUT = (UNKNOWN_ERROR + 5),
72 UNKNOWN_TRANSACTION = (UNKNOWN_ERROR + 6),
73#endif
74 FDS_NOT_ALLOWED = (UNKNOWN_ERROR + 7),
75 UNEXPECTED_NULL = (UNKNOWN_ERROR + 8),
76};
77
78// Restore define; enumeration is in "android" namespace, so the value defined
79// there won't work for Win32 code in a different namespace.
80#ifdef _WIN32
81# define NO_ERROR 0L
82#endif
83
84}; // namespace android
85
86// ---------------------------------------------------------------------------
87
88#endif // ANDROID_ERRORS_H
89
所以,我们看到的status_t不过是int类型而已,只是取值有些枚举值已经定义好,当然也可以自己扩展。
Android Native代码中的status_t定义相关推荐
- Android Native 代码NDK开发学习笔记
引用:http://www.kunli.info/2011/08/21/android-native-code-study-note/ JNI,全称Java Native Interface,是用于让 ...
- android native java_在Android Native层中创建Java虚拟机实例
前言 Android应用中JNI代码,是作为本地方法运行的.而大部分情况下,这些JNI方法均需要传递Dalvik虚拟机实例作为第一个参数.例如,你需要用虚拟机实例来创建jstring和其他的Java对 ...
- 在Android Native层中创建Java虚拟机实例
前言 Android应用中JNI代码,是作为本地方法运行的.而大部分情况下,这些JNI方法均需要传递Dalvik虚拟机实例作为第一个参数.例如,你需要用虚拟机实例来创建jstring和其他的Java对 ...
- android native 代码内存泄露 定位方案
android native 代码内存泄露 定位方案 java代码的内存定位,暂时我们先不关注.此篇文章,主要围绕c c++代码的内存泄露. ** *欢迎留言,交流您所使用的内存泄露定位方案.*c ...
- java android 数组_android中数组的定义与使用
android中数组的定义 可以直接在JAVA代码中声明,也可以在res->values目录下新建一个xml文件,作为数组资源进行声明 字符数组可以有如下2种声明方式String[]或者是Lis ...
- Android Native 代码 Release 编译 - 隐藏符号表
使用 ndk-build NDK_DEBUG=0 可以编译 release 版本,但是符号表(Symbole table)仍然存在,如何隐藏呢? 在 Android.mk 文件中添加下面的配置: LO ...
- android 在代码中设置样式,安卓代码中设置fontFamily中的样式
今天和视觉调样式的时候,发现一个问题,我们代码中经常使用fontFamily的样式,比如: android:id="@+id/name" android:layout_width= ...
- Android在代码中设置drawableLeft(Right/Top/Bottom)
根据业务的需要,要在代码中设置控件的drawableLeft,drawableRight,drawableTop,drawableBottom属性. 我们知道在xml中设置的方法为: android: ...
- 【Android】代码中动态设置 drawable 背景
如图这样的效果,我们平时直接可以在 xml 写死. 写法很简单. <?xml version="1.0" encoding="utf-8"?>< ...
最新文章
- JavaSE replaceAll 方法
- mysql internal_MySQLInternal笔记
- XML 解析错误:XML 或文本声明不在实体的开头位置,有效的解决方法
- Spring--IoC(2)
- springmvc 配置 tag lib_Java自学之springMVC:Hello Spring MVC
- git前端工程实现ci_大前端项目代码重用,也许lerna是最好的选择
- winserver 服务开机启动
- kettle升级jetty10实验(未完成jaas认证)
- Kotlin实战【一】Kotlin定义与目的
- linux tracker服务器搭建,linux 下 BT Tracker服务器搭建
- Redis数据结构之list对象
- TCP和Socket关系
- 互作转录组常用数据库介绍
- 最新ChatGPT商业运营版网站源码+支持AI绘画+支持用户会员套餐+邀请分佣功能+支持后台一键更新+网站后台管理+永久更新!
- python智能写作_闲人AI写作智能文章生成-文章伪原创-关键词生成文章工具
- laravel中图片验证码以及错误处理
- Skyline查询实验数据点的生成
- OFD转PDF ~java实现
- 日常水文章之rk3188 5.0最简单的视频图片混播
- 巴菲特致股东的一封信:2013年
热门文章
- DLL中的main函数
- 1996:登山——动态规划
- 馒头,不!月饼引起的惨案
- 优信拍集团php面试题_【优信拍PHP高级工程师面试】不错,主管眼光很犀利,而且不扯皮。-看准网...
- Python读取wav音频文件
- GBase 8c V5 主备式部署实操
- 奇虎360笔试题2014
- Python爬虫HTTP异常:rllib.error.HTTPError: HTTP Error 418,伪装User-Agent以及fake-useragent插件的妙用
- 利用Tensorflow实现手写数字识别(附python代码)
- 高等数学——平面曲线的弧长的计算