Ejemplo n.º 1
0
    // ========================================================================
    // Description: This function acts as a simple wrapper for retrieving
    //              socket library errors from errno or h_errno.
    // ========================================================================
    Error GetError( bool p_errno )
    {
        #ifdef _WIN32
            return TranslateError( WSAGetLastError(), p_errno );
        #else
            if( p_errno == true )
                return TranslateError( errno, p_errno );
            else
                return TranslateError( h_errno, p_errno );
        #endif

        return ESeriousError;
    }
Ejemplo n.º 2
0
static void Socket(Service::Interface* self) {
    u32* cmd_buffer = Kernel::GetCommandBuffer();
    u32 domain = cmd_buffer[1]; // Address family
    u32 type = cmd_buffer[2];
    u32 protocol = cmd_buffer[3];

    // Only 0 is allowed according to 3dbrew, using 0 will let the OS decide which protocol to use
    if (protocol != 0) {
        cmd_buffer[1] = UnimplementedFunction(ErrorModule::SOC).raw; // TODO(Subv): Correct error code
        return;
    }

    if (domain != AF_INET) {
        cmd_buffer[1] = UnimplementedFunction(ErrorModule::SOC).raw; // TODO(Subv): Correct error code
        return;
    }

    if (type != SOCK_DGRAM && type != SOCK_STREAM) {
        cmd_buffer[1] = UnimplementedFunction(ErrorModule::SOC).raw; // TODO(Subv): Correct error code
        return;
    }

    u32 socket_handle = static_cast<u32>(::socket(domain, type, protocol));

    if ((s32)socket_handle != SOCKET_ERROR_VALUE)
        open_sockets[socket_handle] = { socket_handle, true };

    int result = 0;
    if ((s32)socket_handle == SOCKET_ERROR_VALUE)
        result = TranslateError(GET_ERRNO);

    cmd_buffer[1] = result;
    cmd_buffer[2] = socket_handle;
}
Ejemplo n.º 3
0
void *dlopen(const char *path, int WXUNUSED(mode) /* mode is ignored */)
{
    NSObjectFileImage ofile;
    NSModule handle = NULL;

    int dyld_result = NSCreateObjectFileImageFromFile(path, &ofile);
    if ( dyld_result != NSObjectFileImageSuccess )
    {
        handle = NULL;
    }
    else
    {
        handle = NSLinkModule
                 (
                    ofile,
                    path,
                    NSLINKMODULE_OPTION_BINDNOW |
                    NSLINKMODULE_OPTION_RETURN_ON_ERROR
                 );
    }

    if ( !handle )
        TranslateError(path, dyld_result);

    return handle;
}
int PIGCSControllerDLL::ConnectUSB(const std::string&  interfaceParameter)
{
	if (ConnectUSB_ == NULL || EnumerateUSB_)
		return DEVICE_NOT_SUPPORTED;

	char szDevices[128*80+1];
	int nrDevices = EnumerateUSB_(szDevices, 128*80, NULL);
	if (nrDevices<0)
		return TranslateError(nrDevices);
	if (nrDevices==0)
		return DEVICE_NOT_CONNECTED;

	std::string deviceName;
	if (interfaceParameter_.empty())
	{
		if (nrDevices != 1)
			return DEVICE_INVALID_PROPERTY_VALUE;
		deviceName = szDevices;
	}
	else
	{
		deviceName = FindDeviceNameInUSBList(szDevices, interfaceParameter);
	}
	if (deviceName.empty())
		return DEVICE_NOT_CONNECTED;

	ID_ = ConnectUSB_(deviceName.c_str());
	if (ID_<0)
		return DEVICE_NOT_CONNECTED;

	return DEVICE_OK;
}
Ejemplo n.º 5
0
static void Bind(Interface* self) {
    u32* cmd_buffer = Kernel::GetCommandBuffer();
    u32 socket_handle = cmd_buffer[1];
    u32 len = cmd_buffer[2];

    // Virtual address of the sock_addr structure
    VAddr sock_addr_addr = cmd_buffer[6];
    if (!Memory::IsValidVirtualAddress(sock_addr_addr)) {
        cmd_buffer[1] = -1; // TODO(Subv): Correct code
        return;
    }

    CTRSockAddr ctr_sock_addr;
    Memory::ReadBlock(sock_addr_addr, reinterpret_cast<u8*>(&ctr_sock_addr), sizeof(CTRSockAddr));

    sockaddr sock_addr = CTRSockAddr::ToPlatform(ctr_sock_addr);

    int res = ::bind(socket_handle, &sock_addr, std::max<u32>(sizeof(sock_addr), len));

    int result = 0;
    if (res != 0)
        result = TranslateError(GET_ERRNO);

    cmd_buffer[0] = IPC::MakeHeader(5, 2, 0);
    cmd_buffer[1] = result;
    cmd_buffer[2] = res;
}
Ejemplo n.º 6
0
static
jobject get_class_loader(jclass cls) {
    jvmtiError err = JVMTI_ERROR_NONE;
    jobject loader = NULL;

    if (printdump == JNI_TRUE) {
        printf(">>> getting class loader ...\n");
    }
    err = (*jvmti)->GetClassLoader(jvmti, cls, &loader);
    if (err != JVMTI_ERROR_NONE) {
        printf("    Error in GetClassLoader: %s (%d)\n", TranslateError(err), err);
    }
    return loader;
}
Ejemplo n.º 7
0
int PIController::OnJoystick(MM::PropertyBase* pProp, MM::ActionType eAct, int joystick)
{
   if (eAct == MM::BeforeGet)
   {
	   int state;
	   if (!qJON(joystick, state))
	   {
		   return TranslateError( GetError() );
	   }
      pProp->Set(long(state));
   }
   else if (eAct == MM::AfterSet)
   {
	   long lstate;
	   pProp->Get(lstate);
	   int state = int(lstate);
    	if (!JON( joystick, state ))
	   {
		   return TranslateError( GetError() );
	   }
   }

   return DEVICE_OK;
}
Ejemplo n.º 8
0
static void Bind(Service::Interface* self) {
    u32* cmd_buffer = Kernel::GetCommandBuffer();
    u32 socket_handle = cmd_buffer[1];
    u32 len = cmd_buffer[2];
    CTRSockAddr* ctr_sock_addr = reinterpret_cast<CTRSockAddr*>(Memory::GetPointer(cmd_buffer[6]));

    if (ctr_sock_addr == nullptr) {
        cmd_buffer[1] = -1; // TODO(Subv): Correct code
        return;
    }

    sockaddr sock_addr = CTRSockAddr::ToPlatform(*ctr_sock_addr);

    int res = ::bind(socket_handle, &sock_addr, std::max<u32>(sizeof(sock_addr), len));

    int result = 0;
    if (res != 0)
        result = TranslateError(GET_ERRNO);

    cmd_buffer[2] = res;
    cmd_buffer[1] = result;
}
Ejemplo n.º 9
0
static
jvmtiError get_module(JNIEnv *env,
                      jobject loader,
                      const char* pkg_name,
                      jobject* module_ptr,
                      const char** mod_name_ptr) {
    jvmtiError err = JVMTI_ERROR_NONE;
    const char* name = (pkg_name == NULL) ? "<NULL>" : pkg_name;

    printf(">>> getting module by loader %p and package \"%s\"\n", loader, name);
    *mod_name_ptr = NULL;
    err = (*jvmti)->GetNamedModule(jvmti, loader, pkg_name, module_ptr);
    if (err != JVMTI_ERROR_NONE) {
        printf("    Error in GetNamedModule for package \"%s\": %s (%d)\n",
               pkg_name, TranslateError(err), err);
        return err;
    }
    printf("    returned module: %p\n", *module_ptr);
    if (*module_ptr == NULL) { // named module was not found
        return err;
    }
    *mod_name_ptr = get_module_name(env, *module_ptr);
    return err;
}
Ejemplo n.º 10
0
ErrorCode Platform::TranslateError() { return TranslateError(errno); }
Ejemplo n.º 11
0
ErrorCode Platform::TranslateError() { return TranslateError(GetLastError()); }
Ejemplo n.º 12
0
int PIController::GetTranslatedError()
{
	return TranslateError(GetError());
}