Lines Matching refs:sc

53 	struct ledsc	*sc;
55 LIST_FOREACH(sc, &led_list, list) {
56 if (sc->ptr == NULL)
58 if (sc->count > 0) {
59 sc->count--;
62 if (*sc->ptr == '.') {
63 sc->ptr = NULL;
66 } else if (*sc->ptr == 'U' || *sc->ptr == 'u') {
67 if (sc->last_second == time_second)
69 sc->last_second = time_second;
70 sc->func(sc->private, *sc->ptr == 'U');
71 } else if (*sc->ptr >= 'a' && *sc->ptr <= 'j') {
72 sc->func(sc->private, 0);
73 sc->count = (*sc->ptr & 0xf) - 1;
74 } else if (*sc->ptr >= 'A' && *sc->ptr <= 'J') {
75 sc->func(sc->private, 1);
76 sc->count = (*sc->ptr & 0xf) - 1;
78 sc->ptr++;
79 if (*sc->ptr == '\0')
80 sc->ptr = sc->str;
87 led_state(struct ledsc *sc, struct sbuf **sb, int state)
91 sb2 = sc->spec;
92 sc->spec = *sb;
94 sc->str = sbuf_data(*sb);
95 if (sc->ptr == NULL) {
99 sc->ptr = sc->str;
101 sc->str = NULL;
102 if (sc->ptr != NULL)
104 sc->ptr = NULL;
105 sc->func(sc->private, state);
107 sc->count = 0;
212 struct ledsc *sc;
231 sc = dev->si_drv1;
232 if (sc != NULL)
233 error = led_state(sc, &sb, state);
243 struct ledsc *sc;
251 LIST_FOREACH(sc, &led_list, list) {
252 if (strcmp(sc->name, name) == 0)
255 if (sc != NULL)
256 error = led_state(sc, &sb, state);
280 struct ledsc *sc;
282 sc = malloc(sizeof *sc, M_LED, M_WAITOK | M_ZERO);
285 sc->name = strdup(name, M_LED);
286 sc->unit = alloc_unr(led_unit);
287 sc->private = priv;
288 sc->func = func;
289 sc->dev = make_dev(&led_cdevsw, sc->unit,
294 sc->dev->si_drv1 = sc;
295 LIST_INSERT_HEAD(&led_list, sc, list);
297 sc->func(sc->private, state != 0);
300 return (sc->dev);
306 struct ledsc *sc;
309 sc = dev->si_drv1;
311 if (sc->ptr != NULL)
313 LIST_REMOVE(sc, list);
319 free_unr(led_unit, sc->unit);
321 if (sc->spec != NULL)
322 sbuf_delete(sc->spec);
323 free(sc->name, M_LED);
324 free(sc, M_LED);