MCPcopy Create free account
hub / github.com/F-Stack/f-stack / clock_register_flags

Function clock_register_flags

freebsd/kern/subr_rtc.c:213–247  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

211}
212
213void
214clock_register_flags(device_t clockdev, long resolution, int flags)
215{
216 struct rtc_instance *rtc, *newrtc;
217
218 newrtc = malloc(sizeof(*newrtc), M_DEVBUF, M_WAITOK);
219 newrtc->clockdev = clockdev;
220 newrtc->resolution = (int)resolution;
221 newrtc->flags = flags;
222 newrtc->schedns = 0;
223 newrtc->resadj.tv_sec = newrtc->resolution / 2 / 1000000;
224 newrtc->resadj.tv_nsec = newrtc->resolution / 2 % 1000000 * 1000;
225 TIMEOUT_TASK_INIT(taskqueue_thread, &newrtc->stask, 0,
226 settime_task_func, newrtc);
227
228 sx_xlock(&rtc_list_lock);
229 if (LIST_EMPTY(&rtc_list)) {
230 LIST_INSERT_HEAD(&rtc_list, newrtc, rtc_entries);
231 } else {
232 LIST_FOREACH(rtc, &rtc_list, rtc_entries) {
233 if (rtc->resolution > newrtc->resolution) {
234 LIST_INSERT_BEFORE(rtc, newrtc, rtc_entries);
235 break;
236 } else if (LIST_NEXT(rtc, rtc_entries) == NULL) {
237 LIST_INSERT_AFTER(rtc, newrtc, rtc_entries);
238 break;
239 }
240 }
241 }
242 sx_xunlock(&rtc_list_lock);
243
244 device_printf(clockdev,
245 "registered as a time-of-day clock, resolution %d.%6.6ds\n",
246 newrtc->resolution / 1000000, newrtc->resolution % 1000000);
247}
248
249void
250clock_register(device_t dev, long res)

Callers 1

clock_registerFunction · 0.85

Calls 2

mallocFunction · 0.85
device_printfFunction · 0.85

Tested by

no test coverage detected