Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 54779
b: refs/heads/master
c: 416ce32
h: refs/heads/master
i:
  54777: d4362e2
  54775: 7b6fdac
v: v3
  • Loading branch information
Andrew Morton authored and Linus Torvalds committed May 8, 2007
1 parent 2d76f3d commit 91737ef
Show file tree
Hide file tree
Showing 3 changed files with 1 addition and 83 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 19bfe37caa8184768ecc15269302f42036625259
refs/heads/master: 416ce32e704d778c283f2f86cadd836cd5d3696c
81 changes: 0 additions & 81 deletions trunk/drivers/rtc/rtc-lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -117,85 +117,4 @@ int rtc_tm_to_time(struct rtc_time *tm, unsigned long *time)
}
EXPORT_SYMBOL(rtc_tm_to_time);


/* Merge the valid (i.e. non-negative) fields of alarm into the current
* time. If the valid alarm fields are earlier than the equivalent
* fields in the time, carry one into the least significant invalid
* field, so that the alarm expiry is in the future. It assumes that the
* least significant invalid field is more significant than the most
* significant valid field, and that the seconds field is valid.
*
* This is used by alarms that take relative (rather than absolute)
* times, and/or have a simple binary second counter instead of
* day/hour/minute/sec registers.
*/
void rtc_merge_alarm(struct rtc_time *now, struct rtc_time *alarm)
{
int *alarmp = &alarm->tm_sec;
int *timep = &now->tm_sec;
int carry_into, i;

/* Ignore everything past the 6th element (tm_year). */
for (i = 5; i > 0; i--) {
if (alarmp[i] < 0)
alarmp[i] = timep[i];
else
break;
}

/* No carry needed if all fields are valid. */
if (i == 5)
return;

for (carry_into = i + 1; i >= 0; i--) {
if (alarmp[i] < timep[i])
break;

if (alarmp[i] > timep[i])
return;
}

switch (carry_into) {
case 1:
alarm->tm_min++;

if (alarm->tm_min < 60)
return;

alarm->tm_min = 0;
/* fall-through */

case 2:
alarm->tm_hour++;

if (alarm->tm_hour < 60)
return;

alarm->tm_hour = 0;
/* fall-through */

case 3:
alarm->tm_mday++;

if (alarm->tm_mday <= rtc_days_in_month[alarm->tm_mon])
return;

alarm->tm_mday = 1;
/* fall-through */

case 4:
alarm->tm_mon++;

if (alarm->tm_mon <= 12)
return;

alarm->tm_mon = 1;
/* fall-through */

case 5:
alarm->tm_year++;
}
}
EXPORT_SYMBOL(rtc_merge_alarm);

MODULE_LICENSE("GPL");
1 change: 0 additions & 1 deletion trunk/include/linux/rtc.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,6 @@ extern int rtc_year_days(unsigned int day, unsigned int month, unsigned int year
extern int rtc_valid_tm(struct rtc_time *tm);
extern int rtc_tm_to_time(struct rtc_time *tm, unsigned long *time);
extern void rtc_time_to_tm(unsigned long time, struct rtc_time *tm);
extern void rtc_merge_alarm(struct rtc_time *now, struct rtc_time *alarm);

#include <linux/device.h>
#include <linux/seq_file.h>
Expand Down

0 comments on commit 91737ef

Please sign in to comment.