Marin Ramesa, le Thu 12 Dec 2013 18:27:04 +0100, a écrit :
> --- a/kern/lock.h
> +++ b/kern/lock.h
> @@ -94,7 +94,10 @@ extern void                check_simple_locks(void);
>  /*
>   * Do not allocate storage for locks if not needed.
>   */
> -#define      decl_simple_lock_data(class,name)
> +struct l {};

Use a better name than just "l" :)

> diff --git a/kern/sched_prim.c b/kern/sched_prim.c
> index c06cd77..71f32c5 100644
> --- a/kern/sched_prim.c
> +++ b/kern/sched_prim.c
> @@ -228,6 +228,8 @@ void assert_wait(
>       thread_t                thread;
>  #if  MACH_SLOCKS
>       simple_lock_t           lock;
> +#else /* MACH_SLOCKS */
> +     decl_simple_lock_data( , lock);

This is not the same: simple_lock_t is a pointer. It'd be better to just
find a way to use decl_simple_lock_data for this.

        decl_simple_lock_data( , *lock);

would probably just work as expected.

> index 8fe3672..67067cf 100644
> --- a/kern/task.c
> +++ b/kern/task.c
> @@ -769,7 +769,7 @@ kern_return_t task_info(
>               event_info->cow_faults = task->cow_faults;
>               event_info->messages_sent = task->messages_sent;
>               event_info->messages_received = task->messages_received;
> -             task_unlock(&task);
> +             task_unlock(task);

Err, this is not the same at all, while task_lock is still using &task.
Either both need the fix, or none.

Samuel

Reply via email to