mlx_pause
if ((sc->mlx_pause.mp_which != 0) &&
(sc->mlx_pause.mp_when > 0) &&
(time_second >= 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)) {
if (time_second >= 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_second) + 5) / 30;
sc->mlx_pause.mp_howlong = time_second + (0xf * 30) - 5;
if ((1 << i) & sc->mlx_pause.mp_which) {
channel, (long)(sc->mlx_pause.mp_howlong - time_second));
struct mlx_pause *mp;
mp = (struct mlx_pause *)addr;
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_second + mp->mp_when;
sc->mlx_pause.mp_howlong = sc->mlx_pause.mp_when + mp->mp_howlong;
#define MLX_PAUSE_CHANNEL _IOW ('M', 3, struct mlx_pause)
struct mlx_pause mlx_pause; /* pending pause operation details */
struct mlx_pause mp;