守望者xxp 2020-01-15 18:43 采纳率: 100%
浏览 948
已采纳

jni使用ioctl操纵节点/dev/rtc0报错

android是32位操作系统android 7.1,linux kernel 是4.4

现象:如果用ioctl传RTC_SET_TIME_LISTEN, 底层ioctl获取没问题,OK
如果用ioctl传RTC_GETTIME_LISTEN, 底层ioctl获取不到,上层报错为: "+++++could not RTC_GETTIME_LISTEN val++++"

#define DRIVER_NAME "/dev/rtc0"

#define RTC_SET_TIME_LISTEN 1
#define RTC_GETTIME_LISTEN 3

namespace android
{

static jint android_server_RtcManager_RtcSetDefaultTime(JNIEnv* /* env /, jobject / thiz */)
{
struct rtc_time rtc;
int result;

ALOGE("++++android_server_RtcManager_RtcSetDefaultTime+++++");
int fd = open(DRIVER_NAME, O_RDWR);
if (fd < 0) {
    ALOGE("could not open %s", DRIVER_NAME);
    return false;
}

memset(&rtc, 0, sizeof(rtc));
rtc.tm_sec = 3;
rtc.tm_min = 3;
rtc.tm_hour = 3;
rtc.tm_mday = 3;
rtc.tm_mon = 3;
rtc.tm_year = 113;
rtc.tm_wday = 3;
rtc.tm_yday = 3;
rtc.tm_isdst = -1;

result = ioctl(fd, RTC_GETTIME_LISTEN, &rtc);
if(result < 0){
    ALOGE("+++++could not RTC_GETTIME_LISTEN val++++");
}
  • 写回答

2条回答 默认 最新

  • threenewbee 2020-01-15 19:14
    关注

    你这个和硬件端口有关,RTC_SET_TIME_LISTEN能行,未必就是没问题,因为写进去可能并不会对正确与否判断。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 黄国涛 2020-01-15 19:07
    关注

    你是不是在做定时开关机?

    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在EXCEL某单元格中查找是否存在另一列中的内容。
  • ¥50 非对称加密(相关搜索:密码学)
  • ¥15 关于非编程寻迹小车的分析
  • ¥15 java导出EXCEL这里已经执行成功了,但是流浪器没有下载
  • ¥15 帮我把代码改的能正常运行就行
  • ¥50 有限元修正、模型修正、最小二乘法,详细步骤
  • ¥15 用plc编写梯形程序
  • ¥15 关于#物联网#的问题:新大陆AIOT中,按照手册教程进行添加,设置完成后网关一直不上线,显示Never这是网络服务的信息
  • ¥15 这个要用一维热方程但是我不知道怎么运用这个公式
  • ¥15 OpenFOAM多孔介质传热模型建模