Lines Matching defs:device

3  *  Character device driver for extended error reporting.
18 #include <linux/device.h>
48 * each time the device is opened and destroy the buffer when the file is
245 * When a DASD device driver wants to report an error, it calls the
251 * DASD_EER_NOPATH: There is no path to the device left.
252 * DASD_EER_STATECHANGE: The state of the device has changed.
265 * when the extended error reporting is enabled for a device (by
267 * eer enabled DASD device. The presence of the cqr in device->eer_cqr
268 * indicates that eer is enable for the device. The use of the snss request
293 static void dasd_eer_write_standard_trigger(struct dasd_device *device,
316 strscpy(header.busid, dev_name(&device->cdev->dev),
337 static void dasd_eer_write_snss_trigger(struct dasd_device *device,
359 strscpy(header.busid, dev_name(&device->cdev->dev),
378 void dasd_eer_write(struct dasd_device *device, struct dasd_ccw_req *cqr,
381 if (!device->eer_cqr)
386 dasd_eer_write_standard_trigger(device, cqr, id);
391 dasd_eer_write_standard_trigger(device, NULL, id);
394 dasd_eer_write_snss_trigger(device, cqr, id);
397 dasd_eer_write_standard_trigger(device, NULL, id);
405 * Needs to be called with the device held.
407 void dasd_eer_snss(struct dasd_device *device)
411 cqr = device->eer_cqr;
414 if (test_and_set_bit(DASD_FLAG_EER_IN_USE, &device->flags)) {
416 set_bit(DASD_FLAG_EER_SNSS, &device->flags);
420 clear_bit(DASD_FLAG_EER_SNSS, &device->flags);
422 list_add(&cqr->devlist, &device->ccw_queue);
423 dasd_schedule_device_bh(device);
431 struct dasd_device *device = cqr->startdev;
434 dasd_eer_write(device, cqr, DASD_EER_STATECHANGE);
435 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags);
436 if (device->eer_cqr == cqr) {
437 clear_bit(DASD_FLAG_EER_IN_USE, &device->flags);
438 if (test_bit(DASD_FLAG_EER_SNSS, &device->flags))
440 dasd_eer_snss(device);
443 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags);
449 * is a new ccw in device->eer_cqr. Free the "old"
452 dasd_sfree_request(cqr, device);
456 * Enable error reporting on a given device.
458 int dasd_eer_enable(struct dasd_device *device)
465 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags);
466 if (device->eer_cqr)
468 else if (!device->discipline ||
469 strcmp(device->discipline->name, "ECKD"))
471 else if (test_bit(DASD_FLAG_OFFLINE, &device->flags))
478 SNSS_DATA_SIZE, device, NULL);
485 cqr->startdev = device;
501 if (!device->eer_cqr) {
502 device->eer_cqr = cqr;
507 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags);
510 dasd_sfree_request(cqr, device);
516 * Disable error reporting on a given device.
518 void dasd_eer_disable(struct dasd_device *device)
524 if (!device->eer_cqr)
526 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags);
527 cqr = device->eer_cqr;
528 device->eer_cqr = NULL;
529 clear_bit(DASD_FLAG_EER_SNSS, &device->flags);
530 in_use = test_and_clear_bit(DASD_FLAG_EER_IN_USE, &device->flags);
531 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags);
533 dasd_sfree_request(cqr, device);
537 * SECTION: the device operations
560 DBF_EVENT(DBF_WARNING, "can't open device since module "
711 "register misc device");