Can we use semaphore or mutex or spin lock in interrupt
context in linux kernel ?

Answers were Sorted based on User's Feedback



Can we use semaphore or mutex or spin lock in interrupt context in linux kernel ?..

Answer / achilles

We cannot sleep in interrupt context so semaphores and mutex
can't be used.
Spinlocks can be used for locking in interrupt context.

Is This Answer Correct ?    31 Yes 6 No

Can we use semaphore or mutex or spin lock in interrupt context in linux kernel ?..

Answer / jagannath

spinlock with irq saved is the best choice in interrupt
handler.

Is This Answer Correct ?    5 Yes 2 No

Can we use semaphore or mutex or spin lock in interrupt context in linux kernel ?..

Answer / baazicha

You can give a binary semaphore from ISR.

Is This Answer Correct ?    2 Yes 11 No

Post New Answer

More Embedded Systems AllOther Interview Questions

If a system goes blank, how do you debug it?

0 Answers  


Explain me why is model transformations used in the embedded system?

0 Answers  


Tell me can you have constant volatile variables?

0 Answers  


What happens when recursive functions are declared inline?

0 Answers  


This program is in verilog and need help to get it working correctly. This is the code i have so far. Please help. Simple testbench would be great. Thanks\ 'define vend_a_drink {D,dispense,collect} = {IDLE,2'b11}; module drink_machine(nickel_in, dime_in, quarter_in, collect, nickel_out, dime_out, dispense, reset, clk) ; parameter IDLE=0,FIVE=1,TEN=2,TWENTY_FIVE=3, FIFTEEN=4,THIRTY=5,TWENTY=6,OWE_DIME=7; input nickel_in, dime_in, quarter_in, reset, clk; output collect, nickel_out, dime_out, dispense; reg collect, nickel_out, dime_out, dispense; reg [2:0] D, Q; /* state */ // synopsys state_vector Q always @ ( nickel_in or dime_in or quarter_in or reset ) begin nickel_out = 0; dime_out = 0; dispense = 0; collect = 0; if ( reset ) D = IDLE; else begin D = Q; case ( Q ) IDLE: if (nickel_in) D = FIVE; else if (dime_in) D = TEN; else if (quarter_in) D = TWENTY_FIVE; FIVE: if(nickel_in) D = TEN; else if (dime_in) D = FIFTEEN; else if (quarter_in) D = THIRTY; TEN: if (nickel_in) D = FIFTEEN; else if (dime_in) D = TWENTY; else if (quarter_in) 'vend_a_drink; TWENTY_FIVE: if( nickel_in) D = THIRTY; else if (dime_in) 'vend_a_drink; else if (quarter_in) begin 'vend_a_drink; nickel_out = 1; dime_out = 1; end FIFTEEN: if (nickel_in) D = TWENTY; else if (dime_in) D = TWENTY_FIVE; else if (quarter_in) begin 'vend_a_drink; nickel_out = 1; end THIRTY: if (nickel_in) 'vend_a_drink; else if (dime_in) begin 'vend_a_drink; nickel_out = 1; end else if (quarter_in) begin 'vend_a_drink; dime_out = 1; D = OWE_DIME; end TWENTY: if (nickel_in) D = TWENTY_FIVE; else if (dime_in) D = THIRTY; else if (quarter_in) begin 'vend_a_drink; dime_out = 1; end OWE_DIME: begin dime_out = 1; D = IDLE; end endcase end end always @ (posedge clk ) begin Q = D; end endmodule

0 Answers   Intel,






What's so great about <cool web technology of the day>?

0 Answers  


What is the need for dmac in es?

0 Answers  


Why is java used in embedded systems?

0 Answers  


Can we use semaphore or mutex or spin lock in interrupt context in linux kernel ?

3 Answers   Broadcom,


Explain me what is the difference between microprocessor and microcontroller?

0 Answers  


Tell me what could be the reasons for a system to have gone blank and how would you debug it?

0 Answers  


Tell me what is top half & bottom half of a kernel?

0 Answers  


Categories