u32 procwrap_ctrl(union trapped_args *args, void *pr_ctxt)
{
    u32 cb_data_size, __user * psize = (u32 __user *)
                                       args->args_proc_ctrl.args;
    u8 *pargs = NULL;
    int status = 0;
    void *hprocessor = ((struct process_context *)pr_ctxt)->processor;

    if (psize) {
        if (get_user(cb_data_size, psize)) {
            status = -EPERM;
            goto func_end;
        }
        cb_data_size += sizeof(u32);
        pargs = kmalloc(cb_data_size, GFP_KERNEL);
        if (pargs == NULL) {
            status = -ENOMEM;
            goto func_end;
        }

        CP_FM_USR(pargs, args->args_proc_ctrl.args, status,
                  cb_data_size);
    }
    if (!status) {
        status = proc_ctrl(hprocessor,
                           args->args_proc_ctrl.cmd,
                           (struct dsp_cbdata *)pargs);
    }


    kfree(pargs);
func_end:
    return status;
}
Exemple #2
0
void render()
{
     #ifdef FOR_PSP
     proc_ctrl();
     #endif
    checkformovedown();
    procblocks();
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glLoadIdentity();

    glTranslatef(-10.0f,15.0f,-45.0f);

    glRotatef(rquad,1.0f,0.0f,0.0f);
    glRotatef(r_quad,0.0f,1.0f,0.0f);

    //draw the board
    for(i = 0; i < 17; i++)
    {

      for(z = 0; z < 8; z++)
      {
        for(p = 0; p < 3; p++)
        {

        // draw the current game block 
        if(gblock[p].x == z && gblock[p].y == i)
        {
            glBegin(GL_QUADS);

            glColor3f(gblock[p].r + .3f, gblock[p].g + .3f, gblock[p].b + .3f);
            glVertex3f( 1.0f, 1.0f,-1.0f);
            glVertex3f(-1.0f, 1.0f,-1.0f);
            glVertex3f(-1.0f, 1.0f, 1.0f);
            glVertex3f( 1.0f, 1.0f, 1.0f);

            glColor3f(gblock[p].r + .3f, gblock[p].g + .3f, gblock[p].b + .3f);
            glVertex3f( 1.0f,-0.5f, 1.0f);
            glVertex3f(-1.0f,-0.5f, 1.0f);
            glVertex3f(-1.0f,-0.5f,-1.0f);
            glVertex3f( 1.0f,-0.5f,-1.0f);

            glColor3f(gblock[p].r,gblock[p].g,gblock[p].b);
            glVertex3f( 1.0f, 1.0f, 1.0f);
            glVertex3f(-1.0f, 1.0f, 1.0f);
            glVertex3f(-1.0f,-.5f, 1.0f);
            glVertex3f( 1.0f,-.5f, 1.0f);

            glColor3f(gblock[p].r + .2f,gblock[p].g + .2f,gblock[p].b + .2f);
            glVertex3f( 1.0f,-.5f,-1.0f);
            glVertex3f(-1.0f,-.5f,-1.0f);
            glVertex3f(-1.0f, 1.0f,-1.0f);
            glVertex3f( 1.0f, 1.0f,-1.0f);

            glColor3f(gblock[p].r + .1f, gblock[p].g + .1f,gblock[p].b + .1f);
            glVertex3f(-1.0f, 1.0f,1.0f);
            glVertex3f(-1.0f, 1.0f,-1.0f);
            glVertex3f(-1.0f, -0.5f,-1.0f);
            glVertex3f(-1.0f, -0.5f, 1.0f);

            glVertex3f(1.0f,1.0f,1.0f);
            glVertex3f(1.0f,1.0f,-1.0f);
            glVertex3f(1.0f,-0.5f,-1.0f);
            glVertex3f(1.0f,-0.5f,1.0f);

            glEnd();
        }

      }
      
        // draw the rest of the blocks
        if(tiles[i][z].color != BLACK)
        {
            glBegin(GL_QUADS);

            glColor3f(tiles[i][z].r + .3f, tiles[i][z].g + .3f, tiles[i][z].b + .3f);
            glVertex3f( 1.0f, 1.0f,-1.0f);
            glVertex3f(-1.0f, 1.0f,-1.0f);
            glVertex3f(-1.0f, 1.0f, 1.0f);
            glVertex3f( 1.0f, 1.0f, 1.0f);

            glColor3f(tiles[i][z].r + .3f, tiles[i][z].g + .3f, tiles[i][z].b + .3f);
            glVertex3f( 1.0f,-0.5f, 1.0f);
            glVertex3f(-1.0f,-0.5f, 1.0f);
            glVertex3f(-1.0f,-0.5f,-1.0f);
            glVertex3f( 1.0f,-0.5f,-1.0f);

            glColor3f(tiles[i][z].r,tiles[i][z].g,tiles[i][z].b);
            glVertex3f( 1.0f, 1.0f, 1.0f);
            glVertex3f(-1.0f, 1.0f, 1.0f);
            glVertex3f(-1.0f,-.5f, 1.0f);
            glVertex3f( 1.0f,-.5f, 1.0f);

            glColor3f(tiles[i][z].r + .2f,tiles[i][z].g + .2f,tiles[i][z].b + .2f);
            glVertex3f( 1.0f,-.5f,-1.0f);
            glVertex3f(-1.0f,-.5f,-1.0f);
            glVertex3f(-1.0f, 1.0f,-1.0f);
            glVertex3f( 1.0f, 1.0f,-1.0f);

            glColor3f(tiles[i][z].r + .1f, tiles[i][z].g + .1f,tiles[i][z].b + .1f);
            glVertex3f(-1.0f, 1.0f,1.0f);
            glVertex3f(-1.0f, 1.0f,-1.0f);
            glVertex3f(-1.0f, -0.5f,-1.0f);
            glVertex3f(-1.0f, -0.5f, 1.0f);

            glVertex3f(1.0f,1.0f,1.0f);
            glVertex3f(1.0f,1.0f,-1.0f);
            glVertex3f(1.0f,-0.5f,-1.0f);
            glVertex3f(1.0f,-0.5f,1.0f);

            glEnd();

          }
          glTranslatef(3.0f,0.0f,0.0f);
       }

      glTranslatef(-24.0,-2.0,0.0f);

    }

    glutSwapBuffers();
  
}