Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 7143 → Rev 9833

/drivers/ddk/linux/mutex.c
25,22 → 25,6
#include <linux/spinlock.h>
#include <syscall.h>
 
struct kos_taskdata
{
u32 event_mask;
u32 pid;
u16 r0;
u8 state;
u8 r1;
u16 r2;
u8 wnd_number;
u8 r3;
u32 mem_start;
u32 counter_sum;
u32 counter_add;
u32 cpu_usage;
}__attribute__((packed));
 
static inline void mutex_set_owner(struct mutex *lock)
{
}
144,11 → 128,12
*/
flags = safe_cli();
list_for_each_entry(cur, &lock->base.wait_list, list) {
((struct kos_taskdata*)cur->task)->state = 0;
((struct kos_appdata*)cur->task)->state = KOS_SLOT_STATE_RUNNING;
}
safe_sti(flags);
}
 
static __always_inline void
ww_mutex_set_context_slowpath(struct ww_mutex *lock,
struct ww_acquire_ctx *ctx)
{
162,7 → 147,7
* so they can recheck if they have to back off.
*/
list_for_each_entry(cur, &lock->base.wait_list, list) {
((struct kos_taskdata*)cur->task)->state = 0;
((struct kos_appdata*)cur->task)->state = KOS_SLOT_STATE_RUNNING;
}
}
 
170,13 → 155,13
{
struct mutex *lock;
struct mutex_waiter waiter;
struct kos_taskdata* taskdata;
struct kos_appdata *appdata;
u32 eflags;
int ret = 0;
 
lock = &ww->base;
taskdata = (struct kos_taskdata*)(0x80003010);
waiter.task = (u32*)taskdata;
appdata = GetCurrSlot();
waiter.task = appdata;
 
eflags = safe_cli();
 
192,7 → 177,7
if (ret)
goto err;
};
taskdata->state = 1;
appdata->state = KOS_SLOT_STATE_SUSPENDED;
change_task();
};