device.c