Untitled

 avatar
unknown
plain_text
2 years ago
1.2 kB
5
Indexable
/* rejestracja urządzenia */
numer_gl = register_blkdev(numer_gl, NAZWA);
if (numer_gl < 0) {
    pr_alert("blad przydzialu numeru");
    return -EBUSY;
}
pr_info("Numer dla urzadzenia: %d\n",numer_gl);

/* alokacja pamięci dla struktury opisującej urządzenie */
mojblok_disk = alloc_disk(numer_pod);
if (!mojblok_disk) {
    unregister_blkdev(numer_gl, NAZWA);
    pr_alert("blad alokacji pamieci");
    return -ENOMEM;
}

/* ustawienie parametrów urządzenia */
mojblok_disk->major = numer_gl;
mojblok_disk->first_minor = 0;
mojblok_disk->fops = &mojblok_fops;
mojblok_disk->private_data = NULL;
snprintf(mojblok_disk->disk_name, 32, "mojblok");
set_capacity(mojblok_disk, LICZBA_SEKTOROW);

/* utworzenie kolejki zgłoszeń */
mojblok_queue = blk_init_queue(mojblok_request, NULL);
if (!mojblok_queue) {
    put_disk(mojblok_disk);
    unregister_blkdev(numer_gl, NAZWA);
    pr_alert("blad tworzenia kolejki zgloszen");
    return -ENOMEM;
}
blk_queue_logical_block_size(mojblok_queue, 512);
mojblok_disk->queue = mojblok_queue;

/* dodanie urządzenia do systemu */
add_disk(mojblok_disk);
pr_info("Utworzono urzadzenie blokowe %s o liczbie sektorow %d\n", NAZWA, LICZBA_SEKTOROW);
Editor is loading...