svn commit: r285903 - in head/tools/bus_space: . C Python
Marcel Moolenaar
marcel at FreeBSD.org
Sun Jul 26 21:37:34 UTC 2015
Author: marcel
Date: Sun Jul 26 21:37:31 2015
New Revision: 285903
URL: https://svnweb.freebsd.org/changeset/base/285903
Log:
Change the dev argument from a full path to just the device
identification (e.g. isa:0x3f0 or pci0:2:1:0). In libbus,
the device is turned into a path name. For bus_space_map(),
the resource is now specified in a second argument.
Before:
bus.map('/dev/proto/pci0:2:1:0/pcicfg')
busdma.tag_create('/dev/proto/pci0:2:1:0/busdma', ...)
Now:
bus.map('pci0:2:1:0', 'pcicfg')
busdma.tag_create('pci0:2:1:0', ...)
Modified:
head/tools/bus_space/C/lang.c
head/tools/bus_space/C/libbus.h
head/tools/bus_space/Python/lang.c
head/tools/bus_space/bus.c
head/tools/bus_space/bus.h
head/tools/bus_space/busdma.c
Modified: head/tools/bus_space/C/lang.c
==============================================================================
--- head/tools/bus_space/C/lang.c Sun Jul 26 19:47:46 2015 (r285902)
+++ head/tools/bus_space/C/lang.c Sun Jul 26 21:37:31 2015 (r285903)
@@ -80,10 +80,10 @@ bus_write_4(int rid, long ofs, uint32_t
}
int
-bus_map(const char *dev)
+bus_map(const char *dev, const char *resource)
{
- return (bs_map(dev));
+ return (bs_map(dev, resource));
}
int
Modified: head/tools/bus_space/C/libbus.h
==============================================================================
--- head/tools/bus_space/C/libbus.h Sun Jul 26 19:47:46 2015 (r285902)
+++ head/tools/bus_space/C/libbus.h Sun Jul 26 21:37:31 2015 (r285903)
@@ -29,7 +29,7 @@
#ifndef _LIBBUS_SPACE_H_
#define _LIBBUS_SPACE_H_
-int bus_map(const char *dev);
+int bus_map(const char *dev, const char *resource);
int16_t bus_read_1(int rid, long ofs);
int32_t bus_read_2(int rid, long ofs);
int64_t bus_read_4(int rid, long ofs);
Modified: head/tools/bus_space/Python/lang.c
==============================================================================
--- head/tools/bus_space/Python/lang.c Sun Jul 26 19:47:46 2015 (r285902)
+++ head/tools/bus_space/Python/lang.c Sun Jul 26 21:37:31 2015 (r285903)
@@ -131,12 +131,12 @@ bus_write_4(PyObject *self, PyObject *ar
static PyObject *
bus_map(PyObject *self, PyObject *args)
{
- char *dev;
+ char *dev, *resource;
int rid;
- if (!PyArg_ParseTuple(args, "s", &dev))
+ if (!PyArg_ParseTuple(args, "ss", &dev, &resource))
return (NULL);
- rid = bs_map(dev);
+ rid = bs_map(dev, resource);
if (rid == -1) {
PyErr_SetString(PyExc_IOError, strerror(errno));
return (NULL);
Modified: head/tools/bus_space/bus.c
==============================================================================
--- head/tools/bus_space/bus.c Sun Jul 26 19:47:46 2015 (r285902)
+++ head/tools/bus_space/bus.c Sun Jul 26 21:37:31 2015 (r285903)
@@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$");
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
+#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -92,19 +93,25 @@ rid_lookup(int rid)
}
int
-bs_map(const char *dev)
+bs_map(const char *dev, const char *res)
{
+ char path[PATH_MAX];
struct proto_ioc_region region;
struct resource *r;
- int rid;
+ int len, rid;
+ len = snprintf(path, PATH_MAX, "/dev/proto/%s/%s", dev, res);
+ if (len >= PATH_MAX) {
+ errno = EINVAL;
+ return (-1);
+ }
rid = rid_alloc();
if (rid == -1)
return (-1);
r = rid_lookup(rid);
if (r == NULL)
return (-1);
- r->fd = open(dev, O_RDWR);
+ r->fd = open(path, O_RDWR);
if (r->fd == -1)
return (-1);
r->rid = -1;
Modified: head/tools/bus_space/bus.h
==============================================================================
--- head/tools/bus_space/bus.h Sun Jul 26 19:47:46 2015 (r285902)
+++ head/tools/bus_space/bus.h Sun Jul 26 21:37:31 2015 (r285903)
@@ -29,7 +29,7 @@
#ifndef _TOOLS_BUS_SPACE_H_
#define _TOOLS_BUS_SPACE_H_
-int bs_map(const char *dev);
+int bs_map(const char *dev, const char *res);
int bs_read(int rid, off_t ofs, void *buf, ssize_t bufsz);
int bs_subregion(int rid0, long ofs, long sz);
int bs_unmap(int rid);
Modified: head/tools/bus_space/busdma.c
==============================================================================
--- head/tools/bus_space/busdma.c Sun Jul 26 19:47:46 2015 (r285902)
+++ head/tools/bus_space/busdma.c Sun Jul 26 21:37:31 2015 (r285903)
@@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$");
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -183,10 +184,16 @@ int
bd_tag_create(const char *dev, u_long align, u_long bndry, u_long maxaddr,
u_long maxsz, u_int nsegs, u_long maxsegsz, u_int datarate, u_int flags)
{
+ char path[PATH_MAX];
struct obj *tag;
- int fd;
+ int fd, len;
- fd = open(dev, O_RDWR);
+ len = snprintf(path, PATH_MAX, "/dev/proto/%s/busdma", dev);
+ if (len >= PATH_MAX) {
+ errno = EINVAL;
+ return (-1);
+ }
+ fd = open(path, O_RDWR);
if (fd == -1)
return (-1);
More information about the svn-src-head
mailing list