Re: Mac OS 10.4 (Tiger) compilation errors ( GCC v3.3 ) with X Code 2.0 tool
Re: Mac OS 10.4 (Tiger) compilation errors ( GCC v3.3 ) with X Code 2.0 tool
- Subject: Re: Mac OS 10.4 (Tiger) compilation errors ( GCC v3.3 ) with X Code 2.0 tool
- From: Karunakar Reddy G <email@hidden>
- Date: Tue, 19 Jul 2005 14:58:39 +0530
Thanks Quinn,
For creating a Task, first I create a thread using IOCreateThread, then I bind the thread using thread_bind(),
For killing a task, I kill current running tasks using thread_terminate_self()
One more thing, functions thread_bind() and thread_terminate_self() are defined in header files in old developer kit ( April2002Dev.tools).But these functions are removed in Xcode 2.0 developer tools
path: System/Library/Frameworks/Kernel.Framework/Versions/A/Headers
Is there any alternate way to handle using KPIs, instead of using these functions?
Creating a Task:
DWORD xt_start(
DWORD tid,
DWORD mode,
START_FUNC start_addr,
DWORD args[4]
)
{
struct rapi_task *k = (struct rapi_task *)tid;
thread_t thread;
if (!is_valid(k, TASK_TYPE)) {
return FAILURE;
}
k->start_addr = start_addr;
memcpy(k->args,args,sizeof(k->args));
thread = IOCreateThread(start_fn,k);
if (!thread) {
WARN(("IOCreateThread failed\n"));
free_obj(k);
return FAILURE;
}
thread_bind(thread,master_processor);
k->thread = thread;
return SUCCESS;
}
Killing a task:
void rapi_kill_task(void)
{
thread_t thread = current_thread();
struct rapi_task *k;
if ((k = find_task(thread)) != NULL) {
DBG(1,("kill %.4s,thread=%p,running_tasks=%ld\n",k->name,k->thread,running_tasks));
OSDecrementAtomic(&running_tasks);
k->thread = NULL;
thread_terminate_self();
} else {
WARN(("thread=%p not rAPI task\n",thread));
}
}
static void start_fn(void *arg)
{
struct rapi_task *k = (struct rapi_task *)arg;
if (!is_valid(k, TASK_TYPE)) {
return;
}
if (!k->start_addr) {
return;
}
OSIncrementAtomic(&running_tasks);
DBG(1,("start %.4s,thread=%p,running_tasks=%ld\n",k->name,k->thread ,running_tasks));
k->start_addr(k->args[0], k->args[1], k->args[2], k->args[3]);
OSDecrementAtomic(&running_tasks);
DBG(1,("start %.4s,thread=%p,running_tasks=%ld\n",k->name,k->thread,running_tasks));
k->thread = 0;
}
errors:
-error: 'thread_terminate_self' undeclared
-error: 'master_process' undeclared
-error: 'thread_bind' undeclared
Thanks in advance,
Regards,
Karunakar
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-kernel mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden