spinlock

    3熱度

    1回答

    我寫了一個小驅動程序來讀取一些數據並將其提供給用戶。我的驅動程序可以被多個應用程序使用,即它是一個可重入驅動程序,因此使用自旋鎖。但我發現copy_to_user不應該被稱爲與自旋鎖持有。在以下代碼中爲char_device_buf爲共享數據;我必須保護它。除互斥體之外是否有任何機制使用自旋鎖並使用copy_to_user? static ssize_t char_dev_read(struct

    0熱度

    2回答

    我一直在閱讀這篇文章已經有相當長的一段時間了,但對我來說沒有任何意義..可能是因爲我對這一切都很陌生,並且仍然不明白一些內核概念。 這就是我想出了(沒有錯誤或NULL移交,它只是一個問題的緣故): 內核自旋鎖的內核線程,這是preemtive內部執行。 void spinlock_acquire(spinlock_t *spinlock) { tryagain: while(

    0熱度

    1回答

    我是嘗試調試內核代碼,因爲「調度原子」會導致系統崩潰。在一個實際的內核模塊的某個地方,我添加了一行用於調用在另一個內核模塊(這個由我製作的)中定義的函數。電話是: mycallback(svc, skb); 而且mycallback()函數返回int。所以我有兩個問題: 在內核中調用一個非void函數而不將它的結果賦給變量是安全的嗎? 如果代碼mycallback()被稱爲spin_locke

    1熱度

    1回答

    是否可以在C中構建一種組合的信號量/旋轉鎖定? 也就是說,我想它支持線程控制結構: 定期喚醒線程檢查一些變量的狀態。 (如自旋鎖) 如果結構的狀態被另一個線程(如sem_wait/sem_post)更改,則自動喚醒線程。 例如,在這樣的程序: 家長: while(something){ //do some stuff here. sem_post(child_sem);

    1熱度

    1回答

    我偶然碰到排隊的自旋鎖,並想用C++實現。我搜索了一下這方面的信息,但無法獲得正確的文檔。 任何文檔/實施技巧將不勝感激。 在此先感謝 我的代碼如下疑問邁克爾·布朗 // represents processor in wait queue of the spinlock struct qsl_entry { // next processor in the queue that is w

    1熱度

    1回答

    我想爲我的應用程序之一在C++中實現排隊鎖定。 我打算通過算法從以下紙張: http://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CCUQFjAA&url=http%3A%2F%2Fwww.cs.rice.edu%2F~johnmc%2Fpapers%2Ftocs91.pdf&ei=HpRfUKC

    2熱度

    2回答

    我試圖在我的代碼中實現自旋鎖,但是我基於維基百科實現的自旋鎖導致性能極其低下。 int lockValue = 0; void lock() { __asm__("loop: \n\t" "movl $1, %eax \n\t" "xchg %eax, lockValue \n\t" "test %eax, %eax \n\t"

    0熱度

    1回答

    我有以下代碼: #include <stdio.h> #include <pthread.h> #define THREAD_CNT 10 #define ITER 100 #define PRINT 1 int lock; unsigned long long int counter; void spin_lock(int *p) { while(!__sync_bo

    10熱度

    1回答

    我試圖用環形鎖,但即使這樣最基本的代碼在單線程控制檯應用程序拋出的時候我callSpinLock.Exit以下異常() System.Threading.SynchronizationLockException was unhandled by user code Message=The calling thread does not hold the lock. Source=msco

    3熱度

    2回答

    我想了解如何編寫這個類的邏輯,以及何時應該使用它以及何時不應該使用它。任何有識之士將不勝感激 internal struct SpinLock { private volatile int lockHeld; private readonly static int processorCount; public bool IsHeld { g