Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e12e2238 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Adding next kernel alarm time to alarm dumpsys"

parents 91cee2b5 2324e98a
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -1953,6 +1953,14 @@ class AlarmManagerService extends SystemService {
                    pw.print(" = "); pw.println(sdf.format(new Date(nextWakeupRTC)));
                    pw.print(" = "); pw.println(sdf.format(new Date(nextWakeupRTC)));
            pw.print("    set at "); TimeUtils.formatDuration(mLastWakeupSet, nowELAPSED, pw);
            pw.print("    set at "); TimeUtils.formatDuration(mLastWakeupSet, nowELAPSED, pw);
                    pw.println();
                    pw.println();

            pw.print("  Next kernel non-wakeup alarm: ");
            TimeUtils.formatDuration(getNextAlarm(mNativeData, ELAPSED_REALTIME), pw);
            pw.println();
            pw.print("  Next kernel wakeup alarm: ");
            TimeUtils.formatDuration(getNextAlarm(mNativeData, ELAPSED_REALTIME_WAKEUP), pw);
            pw.println();

            pw.print("  Last wakeup: "); TimeUtils.formatDuration(mLastWakeup, nowELAPSED, pw);
            pw.print("  Last wakeup: "); TimeUtils.formatDuration(mLastWakeup, nowELAPSED, pw);
                    pw.print(" = "); pw.println(mLastWakeup);
                    pw.print(" = "); pw.println(mLastWakeup);
            pw.print("  Last trigger: "); TimeUtils.formatDuration(mLastTrigger, nowELAPSED, pw);
            pw.print("  Last trigger: "); TimeUtils.formatDuration(mLastTrigger, nowELAPSED, pw);
@@ -3063,6 +3071,7 @@ class AlarmManagerService extends SystemService {
    private native int waitForAlarm(long nativeData);
    private native int waitForAlarm(long nativeData);
    private native int setKernelTime(long nativeData, long millis);
    private native int setKernelTime(long nativeData, long millis);
    private native int setKernelTimezone(long nativeData, int minuteswest);
    private native int setKernelTimezone(long nativeData, int minuteswest);
    private native long getNextAlarm(long nativeData, int type);


    private long getWhileIdleMinIntervalLocked(int uid) {
    private long getWhileIdleMinIntervalLocked(int uid) {
        final boolean dozing = mPendingIdleUntil != null;
        final boolean dozing = mPendingIdleUntil != null;
+29 −0
Original line number Original line Diff line number Diff line
@@ -81,6 +81,7 @@ public:
    int set(int type, struct timespec *ts);
    int set(int type, struct timespec *ts);
    int setTime(struct timeval *tv);
    int setTime(struct timeval *tv);
    int waitForAlarm();
    int waitForAlarm();
    int getTime(int type, struct itimerspec *spec);


private:
private:
    const TimerFds fds;
    const TimerFds fds;
@@ -118,6 +119,16 @@ int AlarmImpl::set(int type, struct timespec *ts)
    return timerfd_settime(fds[type], TFD_TIMER_ABSTIME, &spec, NULL);
    return timerfd_settime(fds[type], TFD_TIMER_ABSTIME, &spec, NULL);
}
}


int AlarmImpl::getTime(int type, struct itimerspec *spec)
{
    if (static_cast<size_t>(type) > ANDROID_ALARM_TYPE_COUNT) {
        errno = EINVAL;
        return -1;
    }

    return timerfd_gettime(fds[type], spec);
}

int AlarmImpl::setTime(struct timeval *tv)
int AlarmImpl::setTime(struct timeval *tv)
{
{
    struct rtc_time rtc;
    struct rtc_time rtc;
@@ -379,6 +390,23 @@ static jlong android_server_AlarmManagerService_init(JNIEnv*, jobject)
    return reinterpret_cast<jlong>(ret);
    return reinterpret_cast<jlong>(ret);
}
}


static jlong android_server_AlarmManagerService_getNextAlarm(JNIEnv*, jobject, jlong nativeData, jint type)
{
    AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData);
    struct itimerspec spec;
    memset(&spec, 0, sizeof(spec));
    const int result = impl->getTime(type, &spec);
    if (result < 0)
    {
        ALOGE("timerfd_gettime() failed for fd %d: %s\n", static_cast<int>(type), strerror(errno));
        return result;
    }
    struct timespec nextTimespec = spec.it_value;
    long long millis = nextTimespec.tv_sec * 1000LL;
    millis += (nextTimespec.tv_nsec / 1000000LL);
    return static_cast<jlong>(millis);
}

static void android_server_AlarmManagerService_close(JNIEnv*, jobject, jlong nativeData)
static void android_server_AlarmManagerService_close(JNIEnv*, jobject, jlong nativeData)
{
{
    AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData);
    AlarmImpl *impl = reinterpret_cast<AlarmImpl *>(nativeData);
@@ -429,6 +457,7 @@ static const JNINativeMethod sMethods[] = {
    {"waitForAlarm", "(J)I", (void*)android_server_AlarmManagerService_waitForAlarm},
    {"waitForAlarm", "(J)I", (void*)android_server_AlarmManagerService_waitForAlarm},
    {"setKernelTime", "(JJ)I", (void*)android_server_AlarmManagerService_setKernelTime},
    {"setKernelTime", "(JJ)I", (void*)android_server_AlarmManagerService_setKernelTime},
    {"setKernelTimezone", "(JI)I", (void*)android_server_AlarmManagerService_setKernelTimezone},
    {"setKernelTimezone", "(JI)I", (void*)android_server_AlarmManagerService_setKernelTimezone},
    {"getNextAlarm", "(JI)J", (void*)android_server_AlarmManagerService_getNextAlarm},
};
};


int register_android_server_AlarmManagerService(JNIEnv* env)
int register_android_server_AlarmManagerService(JNIEnv* env)