mirror of
https://github.com/drasko/codezero.git
synced 2026-02-26 16:53:14 +01:00
Towards finishing exchange_registers()
- Added mutex_trylock() - Implemented most of exchange_registers() - thread_control() now needs a lock for operations that can modify thread context. - thread_start() does not initialise scheduler flags, now done in thread_create. TODO: - Fork/clone'ed threads should retain their context in tcb, not syscall stack. - exchange_registers() calls in userspace need cleaning up.
This commit is contained in:
@@ -28,6 +28,7 @@ static inline void mutex_init(struct mutex *mutex)
|
||||
INIT_LIST_HEAD(&mutex->wq.task_list);
|
||||
}
|
||||
|
||||
int mutex_trylock(struct mutex *mutex);
|
||||
void mutex_lock(struct mutex *mutex);
|
||||
void mutex_unlock(struct mutex *mutex);
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ static inline void spin_lock_init(struct spinlock *s)
|
||||
*/
|
||||
static inline void spin_lock(struct spinlock *s)
|
||||
{
|
||||
preempt_disable();
|
||||
preempt_disable(); /* This must disable local preempt */
|
||||
#if defined(CONFIG_SMP)
|
||||
__spin_lock(&s->lock);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user