mlx_pause
if (time_uptime >= sc->mlx_pause.mp_howlong) {
sc->mlx_pause.mp_which = 0; /* pause is complete */
if (sc->mlx_pause.mp_when == 0) {
failsafe = ((sc->mlx_pause.mp_howlong - time_uptime) + 5) / 30;
sc->mlx_pause.mp_howlong = time_uptime + (0xf * 30) - 5;
if ((1 << i) & sc->mlx_pause.mp_which) {
channel, (long)(sc->mlx_pause.mp_howlong - time_uptime));
struct mlx_pause *mp;
mp = (struct mlx_pause *)ap->a_data;
if ((mp->mp_which == MLX_PAUSE_CANCEL) && (sc->mlx_pause.mp_when != 0)) {
sc->mlx_pause.mp_which = 0;
if ((sc->mlx_pause.mp_which != 0) && (sc->mlx_pause.mp_when == 0))
sc->mlx_pause.mp_which = mp->mp_which;
sc->mlx_pause.mp_when = time_uptime + mp->mp_when;
sc->mlx_pause.mp_howlong = sc->mlx_pause.mp_when + mp->mp_howlong;
if ((sc->mlx_pause.mp_which != 0) &&
(sc->mlx_pause.mp_when > 0) &&
(time_uptime >= sc->mlx_pause.mp_when)){
sc->mlx_pause.mp_when = 0;
} else if ((sc->mlx_pause.mp_which != 0) &&
(sc->mlx_pause.mp_when == 0)) {
#define MLX_PAUSE_CHANNEL _IOW ('M', 3, struct mlx_pause)
struct mlx_pause mlx_pause; /* pending pause operation details */
struct mlx_pause mp;