Пример #1
0
/* kthread creation */
int kthread_create(kthread_t *tid, int (*kthread_start_func)(void *), void *arg)
{
	int retval = 0;
	void **stack;
	int stacksize;

	stacksize = KTHREAD_DEFAULT_SSIZE;

	/* Create the new thread's stack */
	if(!(stack = (void **)MALLOC_SAFE(stacksize)))
	{
		perror("No memory !!");
		return -1;
	}
	stack = (void*)((char*)stack + stacksize);

	retval = clone(kthread_start_func, stack, CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD, arg);
	
	if(retval > 0)
	{
		*tid = retval;
		return retval;
	}
	
	return -1;
}
Пример #2
0
void set_grid(void) {
    MALLOC_SAFE(( rc =  (double *)malloc(sizeof(double)*NR)));
    MALLOC_SAFE((rmin =  (double *)malloc(sizeof(double)*(NR+1))));
    MALLOC_SAFE((lam =  (double *)malloc(sizeof(double)*NR)));
    MALLOC_SAFE((mdot = (double *)malloc(sizeof(double)*NR)));
    MALLOC_SAFE((dr  =  (double *)malloc(sizeof(double)*NR)));
    dlr = log(params.ro/params.ri)/((double)NR);
    MALLOC_SAFE((lrc = (double *)malloc(sizeof(double)*NR)));
    MALLOC_SAFE((lrmin = (double *)malloc(sizeof(double)*(NR+1))));

    MALLOC_SAFE(( taumin =  (double *)malloc(sizeof(double)*(NR+1))));
    MALLOC_SAFE(( tauc =  (double *)malloc(sizeof(double)*NR)));
    MALLOC_SAFE(( weights =  (double *)malloc(sizeof(double)*NR)));

    int set_flag = TRUE;
    int i;

    for(i=0;i<NR+1;i++) {
        lrmin[i] = log(params.ri) + i*dlr;
        rmin[i] = exp(lrmin[i]);
        taumin[i] = 0;
    }
    for (i=0;i<NR;i++) {
        rc[i] = .5*(rmin[i] + rmin[i+1]);
        lrc[i] = log(rc[i]);
        dr[i] = rmin[i+1]-rmin[i];
        lam[i] = 0;
        tauc[i] = 0;
        weights[i] = 1;
    }
    weights[0] = 0.5; weights[NR-1] = 0.5;
   
    printf("Grid spacing is dlr = %.3e\n",dlr);    

    if (params.forced_torque) {
        read_torque_file(&fld,params.torque_file);
    }
    set_mdot(params.planet_torque);
    return;

}
Пример #3
0
int main()
{
	uthread_struct_t *uthread;
	uthread_t u_tid;
	uthread_arg_t *uarg;

	int inx;

	gtthread_app_init();

	for(inx=0; inx<NUM_THREADS; inx++)
	{
		uarg = (uthread_arg_t *)MALLOC_SAFE(sizeof(uthread_arg_t));
		uarg->num2 = (inx % MAX_UTHREAD_GROUPS);
		uarg->num3 = 0x55;
		uarg->num4 = 0x77;
		uthread_create(&u_tid, func, uarg, (inx % MAX_UTHREAD_GROUPS));
		uarg->num1 = u_tid;
	}

	gtthread_app_exit();

	return(0);
}