PXENV_FILE_OPEN
[PXE FILE API]

FILE OPEN. More...


Data Structures

struct  s_PXENV_FILE_OPEN
 Parameter block for pxenv_file_open(). More...

Defines

#define PXENV_FILE_OPEN   0x00e0
 PXE API function code for pxenv_file_open().

Typedefs

typedef struct s_PXENV_FILE_OPEN PXENV_FILE_OPEN_t

Functions

PXENV_EXIT_t pxenv_file_open (struct s_PXENV_FILE_OPEN *file_open)
 FILE OPEN.


Detailed Description

FILE OPEN.

Define Documentation

#define PXENV_FILE_OPEN   0x00e0

PXE API function code for pxenv_file_open().

Definition at line 1619 of file pxe_api.h.

Referenced by pxe_api_call().


Typedef Documentation

Definition at line 1629 of file pxe_api.h.


Function Documentation

PXENV_EXIT_t pxenv_file_open ( struct s_PXENV_FILE_OPEN file_open  ) 

FILE OPEN.

Parameters:
file_open Pointer to a struct s_PXENV_FILE_OPEN
s_PXENV_FILE_OPEN::FileName URL of file to open
Return values:
PXENV_EXIT_SUCCESS File was opened
PXENV_EXIT_FAILURE File was not opened
s_PXENV_FILE_OPEN::Status PXE status code
s_PXENV_FILE_OPEN::FileHandle Handle of opened file

Definition at line 52 of file pxe_file.c.

References copy_from_user(), DBG, s_PXENV_FILE_OPEN::FileHandle, s_PXENV_FILE_OPEN::FileName, s_SEGOFF16::offset, open(), PXENV_EXIT_FAILURE, PXENV_EXIT_SUCCESS, PXENV_STATUS, PXENV_STATUS_SUCCESS, real_to_user(), s_SEGOFF16::segment, s_PXENV_FILE_OPEN::Status, and strlen_user().

Referenced by pxe_api_call().

00052                                                                      {
00053         userptr_t filename;
00054         size_t filename_len;
00055         int fd;
00056 
00057         DBG ( "PXENV_FILE_OPEN" );
00058 
00059         /* Copy name from external program, and open it */
00060         filename = real_to_user ( file_open->FileName.segment,
00061                               file_open->FileName.offset );
00062         filename_len = strlen_user ( filename, 0 );
00063         {
00064                 char uri_string[ filename_len + 1 ];
00065 
00066                 copy_from_user ( uri_string, filename, 0,
00067                                  sizeof ( uri_string ) );
00068                 DBG ( " %s", uri_string );
00069                 fd = open ( uri_string );
00070         }
00071 
00072         if ( fd < 0 ) {
00073                 file_open->Status = PXENV_STATUS ( fd );
00074                 return PXENV_EXIT_FAILURE;
00075         }
00076 
00077         DBG ( " as file %d", fd );
00078 
00079         file_open->FileHandle = fd;
00080         file_open->Status = PXENV_STATUS_SUCCESS;
00081         return PXENV_EXIT_SUCCESS;
00082 }


Generated on Tue Apr 6 20:01:59 2010 for gPXE by  doxygen 1.5.7.1