[U-Boot] [PATCH] [WIP] sandbox: spi/sf emulation

Mike Frysinger vapier at gentoo.org
Wed Oct 26 22:37:09 CEST 2011


On Wed, Oct 26, 2011 at 12:26, Simon Glass wrote:
> On Wed, Oct 26, 2011 at 3:30 AM, Mike Frysinger wrote:
>> --- a/arch/sandbox/cpu/os.c
>> +++ b/arch/sandbox/cpu/os.c
>>
>> +off_t os_lseek(int fd, off_t offset, int whence)
>> +{
>> +       return lseek(fd, offset, whence);
>> +}
>
> How are we going to deal with calls to something like this where
> 'whence' is defined in an OS-specific header file? I believe we need
> to add definitions to os.h to provide this feature, and make them
> match Posix. Is there a better way? open has a similar problem.

yeah, i noticed this, but was ignoring it for the time being.  the
only portable way i think is to have our local os.h provide arbitrary
defines which the rest of u-boot will utilize, and then in the os_xxx
func, we translate into the host defines.  a bit ugly, but it's the
only way to really work since there is no guarantee that something
like O_RDONLY will always be defined to 0.

>> +const char *os_getenv(const char *name)
>> +{
>> +       /* We can't use getenv() as u-boot provides it own */
>
> Ick, but I can't see an easy alternative.

i ended up not needing this interface so far, so i think i'll drop it
now that it's been archived on the mailing list.

>> --- a/arch/sandbox/cpu/start.c
>> +++ b/arch/sandbox/cpu/start.c
>>
>> +       if (os_getopt("-h", 0) || os_getopt("--help", 0)) {
>> +               serial_puts(usage);
>> +               return 0;
>> +       }
>
> I did actually create something to parse args and put them into a
> 'state' structure. But it uses getopt_long(). Any reason we can't?

on reason i didn't was so i wouldn't have to worry about translating
defines/structs used in u-boot and defines/structs used by the host
system.  i.e. the same issue we face with bits for os_{open,lseek}.

>> --- a/include/os.h
>> +++ b/include/os.h
>>
>> +const char *os_getenv(const char *name);
>
> I would really like to have full comments on all header functions
> (with @param and @return).

right, that's why this is a brain dump :).  i didn't want to document
funcs i would ultimately throw away.

also, this os.h header needs #ifdef protection against multiple inclusion ...
-mike


More information about the U-Boot mailing list