In reply to kiru2006:
Change
{user**task**, 0, sup_drv_checktf, 0, sup_drve_calltf, 0, "$sup_drv"},
to
{user**function**, 0, sup_drv_checktf, sup_drv_sizetf, sup_drve_calltf, 0, "$sup_drv"},
You will need to add sup_drv_sizetf which returns the size of the return value.