[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Lost] [Patch] kernel2: Syscalls fuer p/v
Am Montag, 9. Juni 2008 23.13:17 schrieb kevin@xxxxxxxxxx:
> + kernel2: Syscalls fuer p() und v()
> Index: trunk/src/kernel2/src/syscalls/pv.c
> ===================================================================
> --- /dev/null
> +++ trunk/src/kernel2/src/syscalls/pv.c
> @@ -0,0 +1,72 @@
> ...
> +
> +/**
> + * Kritischen Abschnitt einleiten (Keine RPCs ausser Antworten sind mehr
> + * zulaessig)
> + */
> +int syscall_pm_p(void)
> +{
> + pm_block_rpc(cpu_get_current()->thread->process,
> + cpu_get_current()->thread->process->pid);
Hm hier wäre sowas wie pm_current_process() und pm_current_thread() wohl nicht
übel, aber das wäre was für einen separaten Patch.
> Index: trunk/src/kernel2/include/tasks.h
> ===================================================================
> --- trunk.orig/src/kernel2/include/tasks.h
> +++ trunk/src/kernel2/include/tasks.h
> @@ -70,6 +70,12 @@ typedef struct {
>
> /// Der RPC-Handler fuer diesen Prozess
> vaddr_t rpc_handler;
> +
> + /// Die PID des Prozesses, der RPC fuer diesen Prozess abgestellt hat
> + dword blocked_by_pid;
> +
> + /// Die Anzahl von p()s (RPC wird erst bei 0 wieder freigegeben)
> + dword blocked_count;
Die beiden Member werden in pm_create nirgends initialisiert, soweit ich das
sehe.