style(9) & style.Makefile(9)

Reviewed by:	raj
This commit is contained in:
David E. O'Brien 2008-03-13 17:54:21 +00:00
parent 8757b00e1e
commit 149c7c86d2
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=177152
14 changed files with 296 additions and 257 deletions

View File

@ -1,5 +1,5 @@
# $FreeBSD$
SUBDIR= lib
SUBDIR= lib
.include <bsd.subdir.mk>

View File

@ -110,11 +110,9 @@ memsize(int flags)
int
main(void)
{
int i;
char *ch;
int bargc;
char **bargv;
char **bargv;
char *ch;
int bargc, i;
struct api_signature *sig = NULL;
if (!api_search_sig(&sig))
@ -172,7 +170,8 @@ main(void)
/* XXX only support netbooting for now */
for (i = 0; devsw[i] != NULL; i++)
if (strncmp(devsw[i]->dv_name, "net", strlen(devsw[i]->dv_name)) == 0)
if (strncmp(devsw[i]->dv_name, "net",
strlen(devsw[i]->dv_name)) == 0)
break;
if (devsw[i] == NULL)
@ -183,9 +182,9 @@ main(void)
currdev.d_unit = 0;
env_setenv("currdev", EV_VOLATILE, uboot_fmtdev(&currdev),
uboot_setcurrdev, env_nounset);
uboot_setcurrdev, env_nounset);
env_setenv("loaddev", EV_VOLATILE, uboot_fmtdev(&currdev),
env_noset, env_nounset);
env_noset, env_nounset);
setenv("LINES", "24", 1); /* optional */
setenv("prompt", "loader>", 1);
@ -207,7 +206,7 @@ static int
command_heap(int argc, char *argv[])
{
printf("heap base at %p, top at %p, used %ld\n", end, sbrk(0),
sbrk(0) - end);
sbrk(0) - end);
return(CMD_OK);
}

View File

@ -6,13 +6,12 @@ INTERNALLIB=
SRCS= devicename.c elf_freebsd.c console.c copy.c disk.c \
module.c net.c reboot.c time.c glue.c
CFLAGS+= -I${.CURDIR}/../../../../lib/libstand/
CFLAGS+= -ffreestanding -msoft-float
CFLAGS+= -I${.CURDIR}/../../../../lib/libstand/
# Pick up the bootstrap header for some interface items
CFLAGS+= -I${.CURDIR}/../../common -I${.CURDIR}/../../.. -I.
CFLAGS+= -ffreestanding -msoft-float
.ifdef(BOOT_DISK_DEBUG)
# Make the disk code more talkative
CFLAGS+= -DDISK_DEBUG

View File

@ -55,25 +55,25 @@
*/
#ifndef _API_PUBLIC_H_
#define _API_PUBLIC_H_
#define _API_PUBLIC_H_
#define API_EINVAL 1 /* invalid argument(s) */
#define API_ENODEV 2 /* no device */
#define API_ENOMEM 3 /* no memory */
#define API_EBUSY 4 /* busy, occupied etc. */
#define API_EIO 5 /* I/O error */
#define API_EINVAL 1 /* invalid argument(s) */
#define API_ENODEV 2 /* no device */
#define API_ENOMEM 3 /* no memory */
#define API_EBUSY 4 /* busy, occupied etc. */
#define API_EIO 5 /* I/O error */
typedef int (*scp_t)(int, int *, ...);
typedef int (*scp_t)(int, int *, ...);
#define API_SIG_VERSION 1
#define API_SIG_MAGIC "UBootAPI"
#define API_SIG_MAGLEN 8
#define API_SIG_VERSION 1
#define API_SIG_MAGIC "UBootAPI"
#define API_SIG_MAGLEN 8
struct api_signature {
char magic[API_SIG_MAGLEN]; /* magic string */
uint16_t version; /* API version */
uint32_t checksum; /* checksum of this sig struct */
scp_t syscall; /* entry point to the API */
uint16_t version; /* API version */
uint32_t checksum; /* checksum of this sig struct */
scp_t syscall; /* entry point to the API */
};
enum {
@ -97,9 +97,9 @@ enum {
API_MAXCALL
};
#define MR_ATTR_FLASH 0x0001
#define MR_ATTR_DRAM 0x0002
#define MR_ATTR_SRAM 0x0003
#define MR_ATTR_FLASH 0x0001
#define MR_ATTR_DRAM 0x0002
#define MR_ATTR_SRAM 0x0003
struct mem_region {
unsigned long start;
@ -123,17 +123,17 @@ typedef unsigned long lbasize_t;
#endif
typedef unsigned long lbastart_t;
#define DEV_TYP_NONE 0x0000
#define DEV_TYP_NET 0x0001
#define DEV_TYP_NONE 0x0000
#define DEV_TYP_NET 0x0001
#define DEV_TYP_STOR 0x0002
#define DT_STOR_IDE 0x0010
#define DT_STOR_SCSI 0x0020
#define DT_STOR_USB 0x0040
#define DT_STOR_MMC 0x0080
#define DEV_TYP_STOR 0x0002
#define DT_STOR_IDE 0x0010
#define DT_STOR_SCSI 0x0020
#define DT_STOR_USB 0x0040
#define DT_STOR_MMC 0x0080
#define DEV_STA_CLOSED 0x0000 /* invalid, closed */
#define DEV_STA_OPEN 0x0001 /* open i.e. active */
#define DEV_STA_CLOSED 0x0000 /* invalid, closed */
#define DEV_STA_OPEN 0x0001 /* open i.e. active */
struct device_info {
int type;
@ -149,8 +149,8 @@ struct device_info {
unsigned char hwaddr[6];
} net;
} info;
#define di_stor info.storage
#define di_net info.net
#define di_stor info.storage
#define di_net info.net
int state;
};

View File

@ -40,8 +40,8 @@ ssize_t
uboot_copyin(const void *src, vm_offset_t dest, const size_t len)
{
bcopy(src, (void *)dest, len);
return (len);
bcopy(src, (void *)dest, len);
return (len);
}
ssize_t

View File

@ -27,16 +27,17 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/disklabel.h>
#include <stand.h>
#include <string.h>
#include <sys/disklabel.h>
#include "bootstrap.h"
#include "libuboot.h"
static int uboot_parsedev(struct uboot_devdesc **dev, const char *devspec, const char **path);
/*
/*
* Point (dev) at an allocated device specifier for the device matching the
* path in (devspec). If it contains an explicit device specification,
* use that. If not, use the default device.
@ -44,27 +45,26 @@ static int uboot_parsedev(struct uboot_devdesc **dev, const char *devspec, const
int
uboot_getdev(void **vdev, const char *devspec, const char **path)
{
struct uboot_devdesc **dev = (struct uboot_devdesc **)vdev;
int rv;
/*
* If it looks like this is just a path and no
* device, go with the current device.
*/
if ((devspec == NULL) ||
(devspec[0] == '/') ||
(strchr(devspec, ':') == NULL)) {
struct uboot_devdesc **dev = (struct uboot_devdesc **)vdev;
int rv;
if (((rv = uboot_parsedev(dev, getenv("currdev"), NULL)) == 0) &&
(path != NULL))
/*
* If it looks like this is just a path and no
* device, go with the current device.
*/
if ((devspec == NULL) || (devspec[0] == '/') ||
(strchr(devspec, ':') == NULL)) {
if (((rv = uboot_parsedev(dev, getenv("currdev"), NULL)) == 0)
&& (path != NULL))
*path = devspec;
return(rv);
}
/*
* Try to parse the device name off the beginning of the devspec
*/
return(uboot_parsedev(dev, devspec, path));
return(rv);
}
/*
* Try to parse the device name off the beginning of the devspec.
*/
return(uboot_parsedev(dev, devspec, path));
}
/*
@ -79,159 +79,166 @@ uboot_getdev(void **vdev, const char *devspec, const char **path)
* For disk-type devices, the syntax is:
*
* disk<unit>[s<slice>][<partition>]:
*
*
*/
static int
uboot_parsedev(struct uboot_devdesc **dev, const char *devspec, const char **path)
uboot_parsedev(struct uboot_devdesc **dev, const char *devspec,
const char **path)
{
struct uboot_devdesc *idev;
struct devsw *dv;
int i, unit, slice, partition, err;
char *cp;
const char *np;
struct uboot_devdesc *idev;
struct devsw *dv;
char *cp;
const char *np;
int i, unit, slice, partition, err;
/* minimum length check */
if (strlen(devspec) < 2)
return(EINVAL);
/* minimum length check */
if (strlen(devspec) < 2)
return(EINVAL);
/* look for a device that matches */
for (i = 0, dv = NULL; devsw[i] != NULL; i++) {
if (!strncmp(devspec, devsw[i]->dv_name, strlen(devsw[i]->dv_name))) {
dv = devsw[i];
break;
}
}
if (dv == NULL)
return(ENOENT);
idev = malloc(sizeof(struct uboot_devdesc));
err = 0;
np = (devspec + strlen(dv->dv_name));
switch(dv->dv_type) {
case DEVT_NONE: /* XXX what to do here? Do we care? */
break;
case DEVT_DISK:
unit = -1;
slice = -1;
partition = -1;
if (*np && (*np != ':')) {
unit = strtol(np, &cp, 10); /* next comes the unit number */
if (cp == np) {
err = EUNIT;
goto fail;
}
if (*cp == 's') { /* got a slice number */
np = cp + 1;
slice = strtol(np, &cp, 10);
if (cp == np) {
err = ESLICE;
goto fail;
/* look for a device that matches */
for (i = 0, dv = NULL; devsw[i] != NULL; i++) {
if (!strncmp(devspec, devsw[i]->dv_name,
strlen(devsw[i]->dv_name))) {
dv = devsw[i];
break;
}
}
if (*cp && (*cp != ':')) {
partition = *cp - 'a'; /* get a partition number */
if ((partition < 0) || (partition >= MAXPARTITIONS)) {
err = EPART;
goto fail;
}
if (dv == NULL)
return(ENOENT);
idev = malloc(sizeof(struct uboot_devdesc));
err = 0;
np = (devspec + strlen(dv->dv_name));
switch(dv->dv_type) {
case DEVT_NONE: /* XXX what to do here? Do we care? */
break;
case DEVT_DISK:
unit = -1;
slice = -1;
partition = -1;
if (*np && (*np != ':')) {
/* next comes the unit number */
unit = strtol(np, &cp, 10);
if (cp == np) {
err = EUNIT;
goto fail;
}
if (*cp == 's') { /* got a slice number */
np = cp + 1;
slice = strtol(np, &cp, 10);
if (cp == np) {
err = ESLICE;
goto fail;
}
}
if (*cp && (*cp != ':')) {
/* get a partition number */
partition = *cp - 'a';
if ((partition < 0) ||
(partition >= MAXPARTITIONS)) {
err = EPART;
goto fail;
}
cp++;
}
}
cp++;
}
}
if (*cp && (*cp != ':')) {
err = EINVAL;
goto fail;
}
idev->d_unit = unit;
idev->d_kind.disk.slice = slice;
idev->d_kind.disk.partition = partition;
if (path != NULL)
*path = (*cp == 0) ? cp : cp + 1;
break;
case DEVT_NET:
unit = 0;
if (*np && (*np != ':')) {
unit = strtol(np, &cp, 0); /* get unit number if present */
if (cp == np) {
err = EUNIT;
if (*cp && (*cp != ':')) {
err = EINVAL;
goto fail;
}
idev->d_unit = unit;
idev->d_kind.disk.slice = slice;
idev->d_kind.disk.partition = partition;
if (path != NULL)
*path = (*cp == 0) ? cp : cp + 1;
break;
case DEVT_NET:
unit = 0;
if (*np && (*np != ':')) {
/* get unit number if present */
unit = strtol(np, &cp, 0);
if (cp == np) {
err = EUNIT;
goto fail;
}
}
if (*cp && (*cp != ':')) {
err = EINVAL;
goto fail;
}
if (dv->dv_type == DEVT_NET)
idev->d_unit = unit;
if (path != NULL)
*path = (*cp == 0) ? cp : cp + 1;
break;
default:
err = EINVAL;
goto fail;
}
}
if (*cp && (*cp != ':')) {
err = EINVAL;
goto fail;
idev->d_dev = dv;
idev->d_type = dv->dv_type;
if (dev == NULL) {
free(idev);
} else {
*dev = idev;
}
return(0);
if (dv->dv_type == DEVT_NET)
idev->d_unit = unit;
if (path != NULL)
*path = (*cp == 0) ? cp : cp + 1;
break;
default:
err = EINVAL;
goto fail;
}
idev->d_dev = dv;
idev->d_type = dv->dv_type;
if (dev == NULL) {
fail:
free(idev);
} else {
*dev = idev;
}
return(0);
fail:
free(idev);
return(err);
return(err);
}
char *
uboot_fmtdev(void *vdev)
{
struct uboot_devdesc *dev = (struct uboot_devdesc *)vdev;
static char buf[128]; /* XXX device length constant? */
char *cp;
switch(dev->d_type) {
case DEVT_NONE:
strcpy(buf, "(no device)");
break;
struct uboot_devdesc *dev = (struct uboot_devdesc *)vdev;
char *cp;
static char buf[128]; /* XXX device length constant? */
case DEVT_DISK:
cp = buf;
cp += sprintf(cp, "%s%d", dev->d_dev->dv_name, dev->d_unit);
if (dev->d_kind.disk.slice > 0)
cp += sprintf(cp, "s%d", dev->d_kind.disk.slice);
if (dev->d_kind.disk.partition >= 0)
cp += sprintf(cp, "%c", dev->d_kind.disk.partition + 'a');
strcat(cp, ":");
break;
switch(dev->d_type) {
case DEVT_NONE:
strcpy(buf, "(no device)");
break;
case DEVT_NET:
sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit);
break;
}
return(buf);
case DEVT_DISK:
cp = buf;
cp += sprintf(cp, "%s%d", dev->d_dev->dv_name, dev->d_unit);
if (dev->d_kind.disk.slice > 0)
cp += sprintf(cp, "s%d", dev->d_kind.disk.slice);
if (dev->d_kind.disk.partition >= 0)
cp += sprintf(cp, "%c", dev->d_kind.disk.partition +
'a');
strcat(cp, ":");
break;
case DEVT_NET:
sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit);
break;
}
return(buf);
}
/*
* Set currdev to suit the value being supplied in (value)
* Set currdev to suit the value being supplied in (value).
*/
int
uboot_setcurrdev(struct env_var *ev, int flags, const void *value)
{
struct uboot_devdesc *ncurr;
int rv;
struct uboot_devdesc *ncurr;
int rv;
if ((rv = uboot_parsedev(&ncurr, value, NULL)) != 0)
return(rv);
free(ncurr);
env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL);
return(0);
if ((rv = uboot_parsedev(&ncurr, value, NULL)) != 0)
return(rv);
free(ncurr);
env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL);
return(0);
}

View File

@ -40,8 +40,8 @@ __FBSDID("$FreeBSD$");
#include "bootstrap.h"
static int d_init(void);
static int d_strategy(void *devdata, int flag, daddr_t dblk,
size_t size, char *buf, size_t *rsize);
static int d_strategy(void *devdata, int flag, daddr_t dblk,
size_t size, char *buf, size_t *rsize);
static int d_open(struct open_file *f, ...);
static int d_close(struct open_file *f);
static int d_ioctl(struct open_file *f, u_long cmd, void *data);
@ -68,6 +68,7 @@ SLIST_HEAD(, opened_dev) opened_devs = SLIST_HEAD_INITIALIZER(opened_dev);
static int
d_init(void)
{
return 0;
}
@ -75,24 +76,28 @@ static int
d_strategy(void *devdata, int flag, daddr_t dblk, size_t size, char *buf,
size_t *rsize)
{
return (EINVAL);
}
static int
d_open(struct open_file *f, ...)
{
return (EINVAL);
}
static int
d_close(struct open_file *f)
{
return (EINVAL);
}
static int
d_ioctl(struct open_file *f, u_long cmd, void *data)
{
return (EINVAL);
}
@ -100,4 +105,5 @@ static void
d_print(int verbose)
{
return;
}

View File

@ -63,9 +63,9 @@ int
__elfN(uboot_exec)(struct preloaded_file *fp)
{
struct file_metadata *fmp;
vm_offset_t mdp;
vm_offset_t mdp;
Elf_Ehdr *e;
int error;
int error;
if ((fmp = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL) {
return (EFTYPE);
@ -83,8 +83,7 @@ __elfN(uboot_exec)(struct preloaded_file *fp)
panic("exec returned");
}
struct file_format uboot_elf =
{
struct file_format uboot_elf = {
__elfN(uboot_load),
__elfN(uboot_exec)
};

View File

@ -35,9 +35,9 @@ __FBSDID("$FreeBSD$");
#undef DEBUG
#ifdef DEBUG
#define debugf(fmt, args...) do { printf("%s(): ", __func__); printf(fmt,##args); } while (0)
#define debugf(fmt, args...) do { printf("%s(): ", __func__); printf(fmt,##args); } while (0)
#else
#define debugf(fmt, args...)
#define debugf(fmt, args...)
#endif
/* Some random address used by U-Boot. */
@ -106,7 +106,8 @@ crc32(const void *buf, size_t size)
}
static int valid_sig(struct api_signature *sig)
static int
valid_sig(struct api_signature *sig)
{
uint32_t checksum;
struct api_signature s;
@ -134,7 +135,9 @@ static int valid_sig(struct api_signature *sig)
*
* returns 1/0 depending on found/not found result
*/
int api_search_sig(struct api_signature **sig) {
int
api_search_sig(struct api_signature **sig)
{
unsigned char *sp, *spend;
@ -165,7 +168,8 @@ int api_search_sig(struct api_signature **sig) {
*
****************************************/
int ub_getc(void)
int
ub_getc(void)
{
int c;
@ -175,7 +179,8 @@ int ub_getc(void)
return c;
}
int ub_tstc(void)
int
ub_tstc(void)
{
int t;
@ -185,13 +190,17 @@ int ub_tstc(void)
return t;
}
void ub_putc(char c)
void
ub_putc(char c)
{
syscall(API_PUTC, NULL, (uint32_t)&c);
}
void ub_puts(const char *s)
void
ub_puts(const char *s)
{
syscall(API_PUTS, NULL, (uint32_t)s);
}
@ -201,25 +210,28 @@ void ub_puts(const char *s)
*
****************************************/
void ub_reset(void)
void
ub_reset(void)
{
syscall(API_RESET, NULL);
}
#define MR_MAX 5
#define MR_MAX 5
static struct mem_region mr[MR_MAX];
static struct sys_info si;
struct sys_info * ub_get_sys_info(void)
struct sys_info *
ub_get_sys_info(void)
{
int err = 0;
memset(&si, 0, sizeof(struct sys_info));
si.mr = mr;
si.mr_no = MR_MAX;
memset(&mr, 0, sizeof(mr));
if (!syscall(API_GET_SYS_INFO, &err, (u_int32_t)&si))
return (NULL);
@ -233,16 +245,18 @@ struct sys_info * ub_get_sys_info(void)
*
****************************************/
void ub_udelay(unsigned long usec)
void
ub_udelay(unsigned long usec)
{
syscall(API_UDELAY, NULL, &usec);
}
unsigned long ub_get_timer(unsigned long base)
unsigned long
ub_get_timer(unsigned long base)
{
unsigned long cur;
if (!syscall(API_GET_TIMER, NULL, &cur, &base))
return (0);
@ -258,12 +272,14 @@ unsigned long ub_get_timer(unsigned long base)
*
***************************************************************************/
#define MAX_DEVS 6
#define MAX_DEVS 6
static struct device_info devices[MAX_DEVS];
struct device_info * ub_dev_get(int i)
struct device_info *
ub_dev_get(int i)
{
return ((i < 0 || i >= MAX_DEVS) ? NULL : &devices[i]);
}
@ -273,7 +289,8 @@ struct device_info * ub_dev_get(int i)
*
* returns: number of devices found
*/
int ub_dev_enum(void)
int
ub_dev_enum(void)
{
struct device_info *di;
int n = 0;
@ -308,7 +325,8 @@ int ub_dev_enum(void)
*
* returns: 0 when OK, err otherwise
*/
int ub_dev_open(int handle)
int
ub_dev_open(int handle)
{
struct device_info *di;
int err = 0;
@ -323,7 +341,8 @@ int ub_dev_open(int handle)
return (err);
}
int ub_dev_close(int handle)
int
ub_dev_close(int handle)
{
struct device_info *di;
@ -345,7 +364,8 @@ int ub_dev_close(int handle)
*
* returns: 0/1 accordingly
*/
static int dev_valid(int handle)
static int
dev_valid(int handle)
{
if (handle < 0 || handle >= MAX_DEVS)
@ -357,7 +377,8 @@ static int dev_valid(int handle)
return (1);
}
static int dev_stor_valid(int handle)
static int
dev_stor_valid(int handle)
{
if (!dev_valid(handle))
@ -369,7 +390,8 @@ static int dev_stor_valid(int handle)
return (1);
}
int ub_dev_read(int handle, void *buf, lbasize_t len, lbastart_t start)
int
ub_dev_read(int handle, void *buf, lbasize_t len, lbastart_t start)
{
struct device_info *di;
lbasize_t act_len;
@ -391,7 +413,8 @@ int ub_dev_read(int handle, void *buf, lbasize_t len, lbastart_t start)
return (0);
}
static int dev_net_valid(int handle)
static int
dev_net_valid(int handle)
{
if (!dev_valid(handle))
@ -403,7 +426,8 @@ static int dev_net_valid(int handle)
return (1);
}
int ub_dev_recv(int handle, void *buf, int len)
int
ub_dev_recv(int handle, void *buf, int len)
{
struct device_info *di;
int err = 0, act_len;
@ -421,7 +445,8 @@ int ub_dev_recv(int handle, void *buf, int len)
return (act_len);
}
int ub_dev_send(int handle, void *buf, int len)
int
ub_dev_send(int handle, void *buf, int len)
{
struct device_info *di;
int err = 0;
@ -442,7 +467,8 @@ int ub_dev_send(int handle, void *buf, int len)
*
****************************************/
char * ub_env_get(const char *name)
char *
ub_env_get(const char *name)
{
char *value;
@ -452,7 +478,8 @@ char * ub_env_get(const char *name)
return (value);
}
void ub_env_set(const char *name, char *value)
void
ub_env_set(const char *name, char *value)
{
syscall(API_ENV_SET, NULL, (uint32_t)name, (uint32_t)value);
@ -461,7 +488,8 @@ void ub_env_set(const char *name, char *value)
static char env_name[256];
const char * ub_env_enum(const char *last)
const char *
ub_env_enum(const char *last)
{
const char *env, *str;
int i;

View File

@ -52,7 +52,7 @@ void ub_putc(char c);
void ub_puts(const char *s);
/* system */
void ub_reset(void);
void ub_reset(void);
struct sys_info * ub_get_sys_info(void);
/* time */
@ -60,18 +60,18 @@ void ub_udelay(unsigned long);
unsigned long ub_get_timer(unsigned long);
/* env vars */
char * ub_env_get(const char *name);
void ub_env_set(const char *name, char *value);
char * ub_env_get(const char *name);
void ub_env_set(const char *name, char *value);
const char * ub_env_enum(const char *last);
/* devices */
int ub_dev_enum(void);
int ub_dev_open(int handle);
int ub_dev_close(int handle);
int ub_dev_read(int handle, void *buf,
lbasize_t len, lbastart_t start);
int ub_dev_send(int handle, void *buf, int len);
int ub_dev_recv(int handle, void *buf, int len);
int ub_dev_enum(void);
int ub_dev_open(int handle);
int ub_dev_close(int handle);
int ub_dev_read(int handle, void *buf, lbasize_t len, lbastart_t start);
int ub_dev_send(int handle, void *buf, int len);
int ub_dev_recv(int handle, void *buf, int len);
struct device_info * ub_dev_get(int);
#endif /* _API_GLUE_H_ */

View File

@ -49,24 +49,24 @@ struct uboot_devdesc
/*
* Default network packet alignment in memory
*/
#define PKTALIGN 32
#define PKTALIGN 32
extern int uboot_getdev(void **vdev, const char *devspec, const char **path);
extern char *uboot_fmtdev(void *vdev);
extern int uboot_setcurrdev(struct env_var *ev, int flags, const void *value);
int uboot_getdev(void **vdev, const char *devspec, const char **path);
char *uboot_fmtdev(void *vdev);
int uboot_setcurrdev(struct env_var *ev, int flags, const void *value);
extern struct netif_driver uboot_net;
extern struct devsw uboot_disk;
extern struct netif_driver uboot_net;
extern struct devsw uboot_disk;
ssize_t uboot_copyin(const void *src, vm_offset_t dest, const size_t len);
ssize_t uboot_copyout(const vm_offset_t src, void *dest, const size_t len);
ssize_t uboot_readin(const int fd, vm_offset_t dest, const size_t len);
ssize_t uboot_copyout(const vm_offset_t src, void *dest, const size_t len);
ssize_t uboot_readin(const int fd, vm_offset_t dest, const size_t len);
extern int uboot_autoload(void);
struct preloaded_file;
struct file_format;
extern struct file_format uboot_elf;
extern struct file_format uboot_elf;
extern void reboot(void);
void reboot(void);

View File

@ -42,5 +42,6 @@ __FBSDID("$FreeBSD$");
int
uboot_autoload(void)
{
return(0);
}

View File

@ -64,7 +64,7 @@ extern int devs_no;
extern struct netif_stats net_stats[];
struct netif_dif net_ifs[] = {
/* dif_unit dif_nsel dif_stats dif_private */
/* dif_unit dif_nsel dif_stats dif_private */
{ 0, 1, &net_stats[0], 0, },
};
@ -107,16 +107,16 @@ net_match(struct netif *nif, void *machdep_hint)
static int
net_probe(struct netif *nif, void *machdep_hint)
{
int i;
struct device_info *di;
int i;
for (i = 0; i < devs_no; i++)
if (di = ub_dev_get(i))
if (di->type == DEV_TYP_NET)
break;
if (i == devs_no) {
printf("net_probe: no network devices found, maybe not\
enumerated yet..?\n");
printf("net_probe: no network devices found, maybe not"
" enumerated yet..?\n");
return (-1);
}
@ -172,14 +172,12 @@ net_get(struct iodesc *desc, void *pkt, size_t len, time_t timeout)
{
struct netif *nif = desc->io_netif;
struct uboot_softc *sc = nif->nif_devdata;
time_t t;
int length;
#if defined(NETIF_DEBUG)
printf("net_get: pkt %x, len %d, timeout %d\n", pkt, len, timeout);
#endif
t = getsecs();
do {
length = ub_dev_recv(sc->sc_handle, sc->sc_rxbuf, len);
@ -207,11 +205,11 @@ net_get(struct iodesc *desc, void *pkt, size_t len, time_t timeout)
static void
net_init(struct iodesc *desc, void *machdep_hint)
{
int i, err;
struct netif *nif = desc->io_netif;
struct uboot_softc *sc;
struct device_info *di;
int err, i;
sc = nif->nif_devdata = &uboot_softc;
if (err = ub_dev_open(sc->sc_handle))
@ -234,15 +232,16 @@ net_init(struct iodesc *desc, void *machdep_hint)
/* Set correct alignment for TX packets */
sc->sc_txbufp = sc->sc_txbuf;
if ((unsigned long)sc->sc_txbufp % PKTALIGN)
sc->sc_txbufp += PKTALIGN - (unsigned long)sc->sc_txbufp % PKTALIGN;
sc->sc_txbufp += PKTALIGN -
(unsigned long)sc->sc_txbufp % PKTALIGN;
}
static void
net_end(struct netif *nif)
{
int err;
struct uboot_softc *sc = nif->nif_devdata;
int err;
if (err = ub_dev_close(sc->sc_handle))
panic("%s%d: net_end failed with error %d\n",

View File

@ -30,5 +30,6 @@ __FBSDID("$FreeBSD$");
void
exit(int code)
{
ub_reset();
}