我寫了一個系統調用,設置一個變量,我添加td_sched早些時候我怎樣才能返回比0別的東西從FreeBSD系統調用
#include <sys/param.h>
#include <sys/proc.h>
#include <sys/module.h>
#include <sys/sysproto.h>
#include <sys/sysent.h>
#include <sys/kernel.h>
#include <sys/systm.h>
#include <sys/sched.h>
#include <sys/lock.h>
#include <sys/mutex.h>
struct set_proc_args{
pid_t pid;
struct timeval WCET;
struct timeval deadline;
};
static int set_process_slack(struct thread *tda ,struct set_proc_args * arg){
struct proc * process = pfind(arg->pid);
struct thread* td = FIRST_THREAD_IN_PROC(process);
if(process == NULL)
{
tda->td_retval[0] = -1;
return -1;
}
if(td == NULL)
{
tda->td_retval[0] = -1;
return -1;
}
PROC_LOCK_ASSERT(process, MA_OWNED);
td->td_sched->WCET = (1000000 * arg->WCET.tv_sec + arg->WCET.tv_usec);
td->td_sched->deadline =(uint64_t)(1000000 * arg->deadline.tv_sec+arg->deadline.tv_usec);
td->td_sched->slack_mode = 1;
PROC_UNLOCK(process);
return 0;
}
所以我想返回-1時,這個過程沒有ID被發現。 我測試過,看到代碼正在工作,當發現進程 ,但如果它沒有找到FreeBSD重新啓動 問題在哪裏? 其實我不知道如何正確返回-1。
感謝,這是它:) – po0ya