| DSP/Bridge Error Code Guide |
| |
| |
| Success code is always taken as 0, except for one case where a success status |
| different than 0 can be possible, this is when enumerating a series of dsp |
| objects, if the enumeration doesn't have any more objects it is considered as a |
| successful case. In this case a positive ENODATA is returned (TODO: Change to |
| avoid this case). |
| |
| Error codes are returned as a negative 1, if an specific code is expected, it |
| can be propagated to user space by reading errno symbol defined in errno.h, for |
| specific details on the implementation a copy of the standard used should be |
| read first. |
| |
| The error codes used by this driver are: |
| |
| [EPERM] |
| General driver failure. |
| |
| According to the use case the following might apply: |
| - Device is in 'sleep/suspend' mode due to DPM. |
| - User cannot mark end of stream on an input channel. |
| - Requested operation is invalid for the node type. |
| - Invalid alignment for the node messaging buffer. |
| - The specified direction is invalid for the stream. |
| - Invalid stream mode. |
| |
| [ENOENT] |
| The specified object or file was not found. |
| |
| [ESRCH] |
| A shared memory buffer contained in a message or stream could not be mapped |
| to the GPP client process's virtual space. |
| |
| [EIO] |
| Driver interface I/O error. |
| |
| or: |
| - Unable to plug channel ISR for configured IRQ. |
| - No free I/O request packets are available. |
| |
| [ENXIO] |
| Unable to find a named section in DSP executable or a non-existent memory |
| segment identifier was specified. |
| |
| [EBADF] |
| General error for file handling: |
| |
| - Unable to open file. |
| - Unable to read file. |
| - An error occurred while parsing the DSP executable file. |
| |
| [ENOMEM] |
| A memory allocation failure occurred. |
| |
| [EACCES] |
| - Unable to read content of DCD data section; this is typically caused by |
| improperly configured nodes. |
| - Unable to decode DCD data section content; this is typically caused by |
| changes to DSP/BIOS Bridge data structures. |
| - Unable to get pointer to DCD data section; this is typically caused by |
| improperly configured UUIDs. |
| - Unable to load file containing DCD data section; this is typically |
| caused by a missing COFF file. |
| - The specified COFF file does not contain a valid node registration |
| section. |
| |
| [EFAULT] |
| Invalid pointer or handler. |
| |
| [EEXIST] |
| Attempted to create a channel manager when one already exists. |
| |
| [EINVAL] |
| Invalid argument. |
| |
| [ESPIPE] |
| Symbol not found in the COFF file. DSPNode_Create will return this if |
| the iAlg function table for an xDAIS socket is not found in the COFF file. |
| In this case, force the symbol to be linked into the COFF file. |
| DSPNode_Create, DSPNode_Execute, and DSPNode_Delete will return this if |
| the create, execute, or delete phase function, respectively, could not be |
| found in the COFF file. |
| |
| - No symbol table is loaded/found for this board. |
| - Unable to initialize the ZL COFF parsing module. |
| |
| [EPIPE] |
| I/O is currently pending. |
| |
| - End of stream was already requested on this output channel. |
| |
| [EDOM] |
| A parameter is specified outside its valid range. |
| |
| [ENOSYS] |
| The indicated operation is not supported. |
| |
| [EIDRM] |
| During enumeration a change in the number or properties of the objects |
| has occurred. |
| |
| [ECHRNG] |
| Attempt to created channel manager with too many channels or channel ID out |
| of range. |
| |
| [EBADR] |
| The state of the specified object is incorrect for the requested operation. |
| |
| - Invalid segment ID. |
| |
| [ENODATA] |
| Unable to retrieve resource information from the registry. |
| |
| - No more registry values. |
| |
| [ETIME] |
| A timeout occurred before the requested operation could complete. |
| |
| [ENOSR] |
| A stream has been issued the maximum number of buffers allowed in the |
| stream at once; buffers must be reclaimed from the stream before any more |
| can be issued. |
| |
| - No free channels are available. |
| |
| [EILSEQ] |
| Error occurred in a dynamic loader library function. |
| |
| [EISCONN] |
| The Specified Connection already exists. |
| |
| [ENOTCONN] |
| Nodes not connected. |
| |
| [ETIMEDOUT] |
| Timeout occurred waiting for a response from the hardware. |
| |
| - Wait for flush operation on an output channel timed out. |
| |
| [ECONNREFUSED] |
| No more connections can be made for this node. |
| |
| [EALREADY] |
| Channel is already in use. |
| |
| [EREMOTEIO] |
| dwTimeOut parameter was CHNL_IOCNOWAIT, yet no I/O completions were |
| queued. |
| |
| [ECANCELED] |
| I/O has been cancelled on this channel. |
| |
| [ENOKEY] |
| Invalid subkey parameter. |
| |
| - UUID not found in registry. |