Пример #1
0
static int idedisk_init (void *args) {
	hd_t *drive;
	size_t size;
	char path[PATH_MAX];
	drive = (hd_t *)args;
	struct block_dev *bdev = drive->bdev;
	/* Make new device */
	if ((drive->media == IDE_DISK) && (drive->udmamode == -1)) {
		*path = 0;
		strcat(path, "/dev/hd*");
		if (0 > (drive->idx = block_dev_named(path, idedisk_idx))) {
			return drive->idx;
		}
		drive->bdev = block_dev_create(path,
				&idedisk_pio_driver, drive);
		if (NULL != drive->bdev) {
			size = drive->blks * bdev->block_size;
			block_dev(drive->bdev)->size = size;
		} else {
			return -1;
		}
		create_partitions(drive);
	}
	return 0;
}
Пример #2
0
void scsi_disk_found(struct scsi_dev *sdev) {
	struct block_dev *bdev;
	char path[PATH_MAX];

	strcpy(path, "/dev/sd*");

	if (0 > (sdev->idx = block_dev_named(path, &scsi_disk_idx))) {
		return;
	}

	bdev = block_dev_create(path, (void *) &bdev_driver_scsi, sdev);
	bdev->size = sdev->blk_n * sdev->blk_size;
	sdev->bdev = bdev;

	scsi_state_transit(sdev, &scsi_state_user);
}
Пример #3
0
static int idedisk_udma_init (void *args) {
//	struct ide_tab *ide;
	hd_t *drive;
	double size;
	char   path[PATH_MAX];

#if 0
	ide = ide_get_drive();

	for(int i = 0; i < HD_DRIVES; i++) {
		if (NULL == ide->drive[i]) {
			continue;
		} else {
			drive = (hd_t *) ide->drive[i];
#endif
			drive = (hd_t *)args;
			/* Make new device */
			if ((drive->media == IDE_DISK) && (drive->udmamode != -1)) {
				*path = 0;
				strcat(path, "/dev/hd*");
				if (0 > (drive->idx = block_dev_named(path, idedisk_idx))) {
					return drive->idx;
				}
				drive->bdev = block_dev_create(path,
						&idedisk_udma_driver, drive);
				if (NULL != drive->bdev) {
					size = (double) drive->param.cylinders *
						   (double) drive->param.heads *
						   (double) drive->param.unfbytes *
						   (double) (drive->param.sectors + 1);
					block_dev(drive->bdev)->size = (size_t) size;
				} else {
					return -1;
				}
				create_partitions(drive);
//			} else {
//				continue;
//			}
		}
//	}
	return 0;
}

EMBOX_BLOCK_DEV("idedisk_udma", &idedisk_udma_driver, idedisk_udma_init);