| 254 | } |
| 255 | |
| 256 | void |
| 257 | clock_unregister(device_t clockdev) |
| 258 | { |
| 259 | struct rtc_instance *rtc, *tmp; |
| 260 | |
| 261 | sx_xlock(&rtc_list_lock); |
| 262 | LIST_FOREACH_SAFE(rtc, &rtc_list, rtc_entries, tmp) { |
| 263 | if (rtc->clockdev == clockdev) { |
| 264 | LIST_REMOVE(rtc, rtc_entries); |
| 265 | break; |
| 266 | } |
| 267 | } |
| 268 | sx_xunlock(&rtc_list_lock); |
| 269 | if (rtc != NULL) { |
| 270 | taskqueue_cancel_timeout(taskqueue_thread, &rtc->stask, NULL); |
| 271 | taskqueue_drain_timeout(taskqueue_thread, &rtc->stask); |
| 272 | free(rtc, M_DEVBUF); |
| 273 | } |
| 274 | } |
| 275 | |
| 276 | void |
| 277 | clock_schedule(device_t clockdev, u_int offsetns) |
no test coverage detected