Πότε να χρησιμοποιήσετε το mutex_lock_interruptible;

Πίνακας περιεχομένων:

Πότε να χρησιμοποιήσετε το mutex_lock_interruptible;
Πότε να χρησιμοποιήσετε το mutex_lock_interruptible;

Βίντεο: Πότε να χρησιμοποιήσετε το mutex_lock_interruptible;

Βίντεο: Πότε να χρησιμοποιήσετε το mutex_lock_interruptible;
Βίντεο: Λειτουργικά Συστήματα, Διάλεξη 04 - Μηνάς Δασυγένης 2024, Σεπτέμβριος
Anonim

Χρησιμοποιήστε τη συνάρτηση mutex_lock_interruptible για να επιτρέψετε στο πρόγραμμα οδήγησης σας να διακόπτεται από οποιοδήποτε σήμα. Αυτό σημαίνει ότι η κλήση του συστήματος σας πρέπει να γραφτεί έτσι ώστε να μπορεί να επανεκκινηθεί. (Δείτε επίσης ERESTARTSYS.)

Μπορώ να κλειδώσω ένα spinlock σε μία CPU και να το ξεκλειδώσω σε άλλη CPU;

Η χρήση spinlocks σε ένα σύστημα μονού πυρήνα/μονό-CPU συνήθως δεν έχει νόημα, καθώς εφόσον η δημοσκόπηση spinlock μπλοκάρει τον μόνο διαθέσιμο πυρήνα της CPU, κανένα άλλο νήμα δεν μπορεί να τρέξει και δεδομένου ότι κανένα άλλο νήμα δεν μπορεί να τρέξει, δεν θα ξεκλειδωθεί ούτε η κλειδαριά.

Μπορώ να καλέσω το Kmalloc Gfp_kernel κρατώντας ένα spinlock;

Δεν μπορείτε να, ωστόσο, να κάνετε κάτι που θα κοιμηθεί ενώ κρατάτε ένα spinlock. Για παράδειγμα, μην καλείτε ποτέ καμία συνάρτηση που αγγίζει τη μνήμη χρήστη, kmalloc με τη σημαία GFP_KERNEL, οποιεσδήποτε συναρτήσεις σηματοφόρου ή οποιαδήποτε από τις συναρτήσεις προγραμματισμού ενώ κρατάτε ένα spinlock. … Οι σηματοφόροι στο Linux είναι κλειδαριές ύπνου.

Τι είναι το Spinlock_t;

int spin_trylock(spinlock_t lock) Κλειδώνει το spinlock αν δεν είναι ήδη κλειδωμένο. Εάν δεν μπορείτε να αποκτήσετε την κλειδαριά, βγαίνει με σφάλμα και δεν περιστρέφεται. spin_lock_irq: spin_lock_irq(spinlock_t lock)

Τι είναι το kernel mutex;

Στον πυρήνα του Linux, τα mutexes αναφέρονται σε ένα συγκεκριμένο πρωτόγονο κλειδώματος που επιβάλλει τη σειριοποίηση σε συστήματα κοινόχρηστης μνήμης, και όχι μόνο στον γενικό όρο που αναφέρεται στην «αμοιβαία εξαίρεση» που βρίσκεται στο ακαδημαϊκά ή παρόμοια θεωρητικά εγχειρίδια.

Συνιστάται: