1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
--- a/drivers/dahdi/xpp/xbus-core.c
+++ b/drivers/dahdi/xpp/xbus-core.c
@@ -25,6 +25,7 @@
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/mutex.h>
+#include <linux/math64.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/slab.h>
@@ -1768,11 +1769,13 @@ out:
static void xbus_fill_proc_queue(struct seq_file *sfile, struct xframe_queue *q)
{
+ s32 rem;
+ s64 lag_sec = div_s64_rem(q->worst_lag_usec, 1000, &rem);
seq_printf(sfile,
- "%-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%lld ms\n",
+ "%-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%ld ms\n",
q->name, q->steady_state_count, q->count, q->max_count,
- q->worst_count, q->overflows, q->worst_lag_usec / 1000,
- q->worst_lag_usec % 1000);
+ q->worst_count, q->overflows, lag_sec,
+ rem);
xframe_queue_clearstats(q);
}
--- a/drivers/dahdi/xpp/xbus-pcm.c
+++ b/drivers/dahdi/xpp/xbus-pcm.c
@@ -22,6 +22,7 @@
#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/module.h>
+#include <linux/math64.h>
#include "xbus-pcm.h"
#include "xbus-core.h"
#include "xpp_dahdi.h"
@@ -129,7 +130,7 @@ static int xpp_ticker_step(struct xpp_ti
usec = ktime_us_delta(ticker->last_sample,
ticker->first_sample);
ticker->first_sample = ticker->last_sample;
- ticker->tick_period = usec / ticker->cycle;
+ ticker->tick_period = div_s64(usec, ticker->cycle);
cycled = 1;
}
ticker->count++;
@@ -497,7 +498,7 @@ static void send_drift(xbus_t *xbus, int
XBUS_DBG(SYNC, xbus,
"%sDRIFT adjust %s (%d) (last update %lld seconds ago)\n",
(disable_pll_sync) ? "Fake " : "", msg, drift,
- msec_delta / MSEC_PER_SEC);
+ div_s64(msec_delta, MSEC_PER_SEC));
if (!disable_pll_sync)
CALL_PROTO(GLOBAL, SYNC_SOURCE, xbus, NULL, SYNC_MODE_PLL,
drift);
--- a/drivers/dahdi/xpp/xbus-sysfs.c
+++ b/drivers/dahdi/xpp/xbus-sysfs.c
@@ -23,6 +23,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/errno.h>
+#include <linux/math64.h>
#include <linux/proc_fs.h>
#ifdef PROTOCOL_DEBUG
#include <linux/ctype.h>
@@ -249,11 +250,9 @@ static DEVICE_ATTR_READER(driftinfo_show
/*
* Calculate lost ticks time
*/
- seconds = ktime_ms_delta(now, di->last_lost_tick) / 1000;
- minutes = seconds / 60;
- seconds = seconds % 60;
- hours = minutes / 60;
- minutes = minutes % 60;
+ seconds = div_s64(ktime_ms_delta(now, di->last_lost_tick), 1000);
+ minutes = div_s64_rem(seconds, 60, &seconds);
+ hours = div_s64_rem(minutes, 60, &minutes);
len += snprintf(buf + len, PAGE_SIZE - len,
"%-15s: %8d (was %d:%02d:%02d ago)\n", "lost_ticks",
di->lost_ticks, hours, minutes, seconds);
--- a/drivers/dahdi/xpp/xframe_queue.c
+++ b/drivers/dahdi/xpp/xframe_queue.c
@@ -1,3 +1,4 @@
+#include <linux/math64.h>
#include "xframe_queue.h"
#include "xbus-core.h"
#include "dahdi_debug.h"
@@ -40,10 +41,11 @@ static void __xframe_dump_queue(struct x
THIS_MODULE->name, q->name);
list_for_each_entry_reverse(xframe, &q->head, frame_list) {
xpacket_t *pack = (xpacket_t *)&xframe->packets[0];
- s64 usec = ktime_us_delta(now, xframe->kt_queued);
+ s32 rem;
+ s64 sec = div_s64_rem(ktime_us_delta(now, xframe->kt_queued), 1000, &rem);
- snprintf(prefix, ARRAY_SIZE(prefix), " %3d> %5lld.%03lld msec",
- i++, usec / 1000, usec % 1000);
+ snprintf(prefix, ARRAY_SIZE(prefix), " %3d> %5lld.%03ld msec",
+ i++, sec, rem);
dump_packet(prefix, pack, 1);
}
}
@@ -60,11 +62,13 @@ static bool __xframe_enqueue(struct xfra
if (q->count >= q->max_count) {
q->overflows++;
if ((overflow_cnt++ % 1000) < 5) {
- NOTICE("Overflow of %-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%lld ms\n",
+ s32 rem;
+ s64 lag_sec = div_s64_rem(q->worst_lag_usec, 1000, &rem);
+ NOTICE("Overflow of %-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%ld ms\n",
q->name, q->steady_state_count, q->count,
q->max_count, q->worst_count, q->overflows,
- q->worst_lag_usec / 1000,
- q->worst_lag_usec % 1000);
+ lag_sec,
+ rem);
__xframe_dump_queue(q);
}
ret = 0;
--- a/drivers/dahdi/xpp/xpp_usb.c
+++ b/drivers/dahdi/xpp/xpp_usb.c
@@ -27,6 +27,7 @@
#include <linux/interrupt.h>
#include <linux/delay.h> /* for udelay */
#include <linux/seq_file.h>
+#include <linux/math64.h>
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
#include <asm/uaccess.h>
#else
@@ -891,7 +892,7 @@ static void xpp_send_callback(struct urb
usec = 0; /* System clock jumped */
if (usec > xusb->max_tx_delay)
xusb->max_tx_delay = usec;
- i = usec / USEC_BUCKET;
+ i = div_s64(usec, USEC_BUCKET);
if (i >= NUM_BUCKETS)
i = NUM_BUCKETS - 1;
xusb->usb_tx_delay[i]++;
|