#pragma once
#include <ros/common.h>
+#include <ros/syscall.h>
#include <trap.h>
#include <sys/queue.h>
#include <atomic.h>
int flags;
char *name;
char generic_buf[GENBUF_SZ];
- struct systrace_record *trace;
+ int errno;
+ char errstr[MAX_ERRSTR_LEN];
struct systrace_record *strace;
};
#ifdef CONFIG_SEMAPHORE_DEBUG
TAILQ_ENTRY(semaphore) link;
bool is_on_list; /* would like better sys/queue.h */
- uintptr_t bt_pc; /* program counter of last down */
- uintptr_t bt_fp; /* frame pointer of last down */
- uint32_t calling_core;
#endif
};
uintptr_t *kstack_bottom_addr(uintptr_t stacktop);
void kthread_init(void);
struct kthread *__kthread_zalloc(void);
+void __use_real_kstack(void (*f)(void *arg));
void restart_kthread(struct kthread *kthread);
void kthread_runnable(struct kthread *kthread);
void kthread_yield(void);
return kthread->flags & KTH_IS_KTASK;
}
-/* Debugging */
-void check_poison(char *msg);
-
void sem_init(struct semaphore *sem, int signals);
void sem_init_irqsave(struct semaphore *sem, int signals);
bool sem_trydown(struct semaphore *sem);
bool sem_trydown_irqsave(struct semaphore *sem, int8_t *irq_state);
void sem_down_irqsave(struct semaphore *sem, int8_t *irq_state);
bool sem_up_irqsave(struct semaphore *sem, int8_t *irq_state);
-void print_sem_info(struct semaphore *sem);
-void print_all_sem_info(void);
+void print_all_sem_info(pid_t pid);
void cv_init(struct cond_var *cv);
void cv_init_irqsave(struct cond_var *cv);