/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** @file rs_time.rsh * \brief RenderScript time routines * * This file contains RenderScript functions relating to time and date * manipulation. */ #ifndef __RS_TIME_RSH__ #define __RS_TIME_RSH__ /** * Calendar time interpreted as seconds elapsed since the Epoch (00:00:00 on * January 1, 1970, Coordinated Universal Time (UTC)). */ #ifndef __LP64__ typedef int rs_time_t; #else typedef long rs_time_t; #endif /** * Data structure for broken-down time components. * * tm_sec - Seconds after the minute. This ranges from 0 to 59, but possibly * up to 60 for leap seconds. * tm_min - Minutes after the hour. This ranges from 0 to 59. * tm_hour - Hours past midnight. This ranges from 0 to 23. * tm_mday - Day of the month. This ranges from 1 to 31. * tm_mon - Months since January. This ranges from 0 to 11. * tm_year - Years since 1900. * tm_wday - Days since Sunday. This ranges from 0 to 6. * tm_yday - Days since January 1. This ranges from 0 to 365. * tm_isdst - Flag to indicate whether daylight saving time is in effect. The * value is positive if it is in effect, zero if it is not, and * negative if the information is not available. */ typedef struct { int tm_sec; ///< seconds int tm_min; ///< minutes int tm_hour; ///< hours int tm_mday; ///< day of the month int tm_mon; ///< month int tm_year; ///< year int tm_wday; ///< day of the week int tm_yday; ///< day of the year int tm_isdst; ///< daylight savings time } rs_tm; /** * Returns the number of seconds since the Epoch (00:00:00 UTC, January 1, * 1970). If @p timer is non-NULL, the result is also stored in the memory * pointed to by this variable. If an error occurs, a value of -1 is returned. * * @param timer Location to also store the returned calendar time. * * @return Seconds since the Epoch. */ extern rs_time_t __attribute__((overloadable)) rsTime(rs_time_t *timer); /** * Converts the time specified by @p timer into broken-down time and stores it * in @p local. This function also returns a pointer to @p local. If @p local * is NULL, this function does nothing and returns NULL. * * @param local Broken-down time. * @param timer Input time as calendar time. * * @return Pointer to broken-down time (same as input @p local). */ extern rs_tm * __attribute__((overloadable)) rsLocaltime(rs_tm *local, const rs_time_t *timer); /** * Returns the current system clock (uptime) in milliseconds. * * @return Uptime in milliseconds. */ extern int64_t __attribute__((overloadable)) rsUptimeMillis(void); /** * Returns the current system clock (uptime) in nanoseconds. * * @return Uptime in nanoseconds. */ extern int64_t __attribute__((overloadable)) rsUptimeNanos(void); /** * Returns the time in seconds since this function was last called in this * script. * * @return Time in seconds. */ extern float __attribute__((overloadable)) rsGetDt(void); #endif