本文整理汇总了C++中register_driver函数的典型用法代码示例。如果您正苦于以下问题:C++ register_driver函数的具体用法?C++ register_driver怎么用?C++ register_driver使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了register_driver函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: mtdconfig_register
int mtdconfig_register(FAR struct mtd_dev_s *mtd)
{
int ret = -ENOMEM;
struct mtdconfig_struct_s *dev;
struct mtd_geometry_s geo; /* Device geometry */
dev = (struct mtdconfig_struct_s *)kmm_malloc(sizeof(struct mtdconfig_struct_s));
if (dev)
{
/* Initialize the mtdconfig device structure */
dev->mtd = mtd;
nxsem_init(&dev->exclsem, 0, 1);
/* Get the device geometry. (casting to uintptr_t first eliminates
* complaints on some architectures where the sizeof long is different
* from the size of a pointer).
*/
ret = MTD_IOCTL(mtd, MTDIOC_GEOMETRY, (unsigned long)((uintptr_t)&geo));
if (ret < 0)
{
ferr("ERROR: MTD ioctl(MTDIOC_GEOMETRY) failed: %d\n", ret);
kmm_free(dev);
goto errout;
}
dev->blocksize = geo.blocksize;
dev->neraseblocks = geo.neraseblocks;
dev->erasesize = geo.erasesize;
dev->nblocks = geo.neraseblocks * geo.erasesize / geo.blocksize;
(void)register_driver("/dev/config", &mtdconfig_fops, 0666, dev);
}
errout:
return ret;
}
开发者ID:dagar,项目名称:NuttX,代码行数:38,代码来源:mtd_config.c
示例2: qe_register
int qe_register(FAR const char *devpath, FAR struct qe_lowerhalf_s *lower)
{
FAR struct qe_upperhalf_s *upper;
/* Allocate the upper-half data structure */
upper = (FAR struct qe_upperhalf_s *)kmm_zalloc(sizeof(struct qe_upperhalf_s));
if (!upper)
{
snerr("ERROR: Allocation failed\n");
return -ENOMEM;
}
/* Initialize the PWM device structure (it was already zeroed by kmm_zalloc()) */
sem_init(&upper->exclsem, 0, 1);
upper->lower = lower;
/* Register the PWM device */
sninfo("Registering %s\n", devpath);
return register_driver(devpath, &g_qeops, 0666, upper);
}
开发者ID:a1ien,项目名称:nuttx,代码行数:23,代码来源:qencoder.c
示例3: lm75_register
int lm75_register(FAR const char *devpath, FAR struct i2c_dev_s *i2c, uint8_t addr)
{
FAR struct lm75_dev_s *priv;
int ret;
/* Sanity check */
DEBUGASSERT(i2c != NULL);
DEBUGASSERT(addr == CONFIG_LM75_ADDR0 || addr == CONFIG_LM75_ADDR1 ||
addr == CONFIG_LM75_ADDR2 || addr == CONFIG_LM75_ADDR3 ||
addr == CONFIG_LM75_ADDR4 || addr == CONFIG_LM75_ADDR5 ||
addr == CONFIG_LM75_ADDR6 || addr == CONFIG_LM75_ADDR7);
/* Initialize the LM-75 device structure */
priv = (FAR struct lm75_dev_s *)kmm_malloc(sizeof(struct lm75_dev_s));
if (priv == NULL)
{
sndbg("Failed to allocate instance\n");
return -ENOMEM;
}
priv->i2c = i2c;
priv->addr = addr;
priv->fahrenheit = false;
/* Register the character driver */
ret = register_driver(devpath, &g_lm75fops, 0666, priv);
if (ret < 0)
{
sndbg("Failed to register driver: %d\n", ret);
kmm_free(priv);
}
return ret;
}
开发者ID:justdoitding,项目名称:Nuttx_PSoC4,代码行数:37,代码来源:lm75.c
示例4: oneshot_register
int oneshot_register(FAR const char *devname,
FAR struct oneshot_lowerhalf_s *lower)
{
FAR struct oneshot_dev_s *priv;
int ret;
sninfo("devname=%s lower=%p\n", devname, lower);
DEBUGASSERT(devname != NULL && lower != NULL);
/* Allocate a new oneshot timer driver instance */
priv = (FAR struct oneshot_dev_s *)
kmm_zalloc(sizeof(struct oneshot_dev_s));
if (!priv)
{
snerr("ERROR: Failed to allocate device structure\n");
return -ENOMEM;
}
/* Initialize the new oneshot timer driver instance */
priv->od_lower = lower;
nxsem_init(&priv->od_exclsem, 0, 1);
/* And register the oneshot timer driver */
ret = register_driver(devname, &g_oneshot_ops, 0666, priv);
if (ret < 0)
{
snerr("ERROR: register_driver failed: %d\n", ret);
nxsem_destroy(&priv->od_exclsem);
kmm_free(priv);
}
return ret;
}
开发者ID:dagar,项目名称:NuttX,代码行数:37,代码来源:oneshot.c
示例5: pca9635pw_register
int pca9635pw_register(FAR const char *devpath, FAR struct i2c_dev_s *i2c,
uint8_t const pca9635pw_i2c_addr)
{
/* Sanity check */
DEBUGASSERT(i2c != NULL);
/* Initialize the PCA9635PW device structure */
FAR struct pca9635pw_dev_s *priv =
(FAR struct pca9635pw_dev_s *)kmm_malloc(sizeof(struct pca9635pw_dev_s));
if (priv == NULL)
{
dbg("Failed to allocate instance of pca9635pw_dev_s\n");
return -ENOMEM;
}
priv->i2c = i2c;
priv->i2c_addr = pca9635pw_i2c_addr;
/* Register the character driver */
int const ret = register_driver(devpath, &g_pca9635pw_fileops, 666, priv);
if (ret != OK)
{
dbg("Failed to register driver: %d\n", ret);
kmm_free(priv);
return ret;
}
/* setup i2c frequency */
I2C_SETFREQUENCY(priv->i2c, I2C_BUS_FREQ_HZ);
return OK;
}
开发者ID:justdoitding,项目名称:Nuttx_PSoC4,代码行数:37,代码来源:pca9635pw.c
示例6: PX4_DEBUG
int
VDev::register_class_devname(const char *class_devname)
{
PX4_DEBUG("VDev::register_class_devname %s", class_devname);
if (class_devname == nullptr) {
return -EINVAL;
}
int class_instance = 0;
int ret = -ENOSPC;
while (class_instance < 4) {
char name[32];
snprintf(name, sizeof(name), "%s%d", class_devname, class_instance);
ret = register_driver(name, (void *)this);
if (ret == OK) break;
class_instance++;
}
if (class_instance == 4) {
return ret;
}
return class_instance;
}
开发者ID:JW-CHOI,项目名称:Firmware,代码行数:24,代码来源:vdev.cpp
示例7: register_driver
int
CDev::init()
{
// base class init first
int ret = Device::init();
if (ret != OK) {
goto out;
}
// now register the driver
if (_devname != nullptr) {
ret = register_driver(_devname, &fops, 0666, (void *)this);
if (ret != OK) {
goto out;
}
_registered = true;
}
out:
return ret;
}
开发者ID:ChristophTobler,项目名称:Firmware,代码行数:24,代码来源:cdev.cpp
示例8: activate_driver
static void
activate_driver (GsdSmartcardManager *self,
SECMODModule *driver,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
{
GTask *task;
g_debug ("Activating driver '%s'", driver->commonName);
task = g_task_new (self, cancellable, callback, user_data);
register_driver (self,
driver,
cancellable,
(GAsyncReadyCallback) on_driver_registered,
task);
watch_smartcards_from_driver_async (self,
driver,
cancellable,
(GAsyncReadyCallback) on_smartcards_from_driver_watched,
task);
}
开发者ID:jigpu,项目名称:gnome-settings-daemon-1,代码行数:24,代码来源:gsd-smartcard-manager.c
示例9: max11802_register
//.........这里部分代码省略.........
ret = config->attach(config, max11802_interrupt);
if (ret < 0)
{
ierr("ERROR: Failed to attach interrupt\n");
goto errout_with_priv;
}
iinfo("Mode: %d Bits: 8 Frequency: %d\n",
CONFIG_MAX11802_SPIMODE, CONFIG_MAX11802_FREQUENCY);
/* Lock the SPI bus so that we have exclusive access */
max11802_lock(spi);
/* Configure MAX11802 registers */
SPI_SELECT(priv->spi, SPIDEV_TOUCHSCREEN, true);
(void)SPI_SEND(priv->spi, MAX11802_CMD_MODE_WR);
(void)SPI_SEND(priv->spi, MAX11802_MODE);
SPI_SELECT(priv->spi, SPIDEV_TOUCHSCREEN, false);
SPI_SELECT(priv->spi, SPIDEV_TOUCHSCREEN, true);
(void)SPI_SEND(priv->spi, MAX11802_CMD_AVG_WR);
(void)SPI_SEND(priv->spi, MAX11802_AVG);
SPI_SELECT(priv->spi, SPIDEV_TOUCHSCREEN, false);
SPI_SELECT(priv->spi, SPIDEV_TOUCHSCREEN, true);
(void)SPI_SEND(priv->spi, MAX11802_CMD_TIMING_WR);
(void)SPI_SEND(priv->spi, MAX11802_TIMING);
SPI_SELECT(priv->spi, SPIDEV_TOUCHSCREEN, false);
SPI_SELECT(priv->spi, SPIDEV_TOUCHSCREEN, true);
(void)SPI_SEND(priv->spi, MAX11802_CMD_DELAY_WR);
(void)SPI_SEND(priv->spi, MAX11802_DELAY);
SPI_SELECT(priv->spi, SPIDEV_TOUCHSCREEN, false);
/* Test that the device access was successful. */
SPI_SELECT(priv->spi, SPIDEV_TOUCHSCREEN, true);
(void)SPI_SEND(priv->spi, MAX11802_CMD_MODE_RD);
ret = SPI_SEND(priv->spi, 0);
SPI_SELECT(priv->spi, SPIDEV_TOUCHSCREEN, false);
/* Unlock the bus */
max11802_unlock(spi);
if (ret != MAX11802_MODE)
{
ierr("ERROR: max11802 mode readback failed: %02x\n", ret);
goto errout_with_priv;
}
/* Register the device as an input device */
(void)snprintf(devname, DEV_NAMELEN, DEV_FORMAT, minor);
iinfo("Registering %s\n", devname);
ret = register_driver(devname, &max11802_fops, 0666, priv);
if (ret < 0)
{
ierr("ERROR: register_driver() failed: %d\n", ret);
goto errout_with_priv;
}
/* If multiple MAX11802 devices are supported, then we will need to add
* this new instance to a list of device instances so that it can be
* found by the interrupt handler based on the recieved IRQ number.
*/
#ifdef CONFIG_MAX11802_MULTIPLE
flags = enter_critical_section();
priv->flink = g_max11802list;
g_max11802list = priv;
leave_critical_section(flags);
#endif
/* Schedule work to perform the initial sampling and to set the data
* availability conditions.
*/
ret = work_queue(HPWORK, &priv->work, max11802_worker, priv, 0);
if (ret != 0)
{
ierr("ERROR: Failed to queue work: %d\n", ret);
goto errout_with_priv;
}
/* And return success (?) */
return OK;
errout_with_priv:
sem_destroy(&priv->devsem);
#ifdef CONFIG_MAX11802_MULTIPLE
kmm_free(priv);
#endif
return ret;
}
开发者ID:a1ien,项目名称:nuttx,代码行数:101,代码来源:max11802.c
示例10: devzero_register
void devzero_register(void)
{
(void)register_driver("/dev/zero", &devzero_fops, 0666, NULL);
}
开发者ID:jmacintyre,项目名称:nuttx-k64f,代码行数:4,代码来源:dev_zero.c
示例11: at91_eth_init
static int at91_eth_init(void)
{
register_driver(&at91_eth_driver);
return 0;
}
开发者ID:ray650128,项目名称:barebox-sh4-nextvod,代码行数:5,代码来源:at91_ether.c
示例12: ft80x_register
int ft80x_register(FAR struct i2c_master_s *i2c,
FAR const struct ft80x_config_s *lower)
#endif
{
FAR struct ft80x_dev_s *priv;
int ret;
#if defined(CONFIG_LCD_FT80X_SPI)
DEBUGASSERT(spi != NULL && lower != NULL);
#elif defined(CONFIG_LCD_FT80X_I2C)
DEBUGASSERT(i2c != NULL && lower != NULL);
#endif
/* Allocate the driver state structure */
priv = (FAR struct ft80x_dev_s *)kmm_zalloc(sizeof(struct ft80x_dev_s));
if (priv == NULL)
{
lcderr("ERROR: Failed to allocate state structure\n");
return -ENOMEM;
}
/* Save the lower level interface and configuration information */
priv->lower = lower;
#ifdef CONFIG_LCD_FT80X_SPI
/* Remember the SPI configuration */
priv->spi = spi;
#else
/* Remember the I2C configuration */
priv->i2c = i2c;
#endif
/* Initialize the mutual exclusion semaphore */
sem_init(&priv->exclsem, 0, 1);
/* Initialize the FT80x */
ret = ft80x_initialize(priv);
if (ret < 0)
{
goto errout_with_sem;
}
/* Attach our interrupt handler */
DEBUGASSERT(lower->attach != NULL && lower->enable != NULL);
ret = lower->attach(lower, ft80x_interrupt, priv);
if (ret < 0)
{
goto errout_with_sem;
}
/* Disable all interrupt sources, but enable interrupts both in the lower
* half driver and in the FT80x.
*/
ft80x_write_word(priv, FT80X_REG_INT_MASK, 0);
ft80x_write_word(priv, FT80X_REG_INT_EN, FT80X_INT_ENABLE);
lower->enable(lower, true);
/* Register the FT80x character driver */
ret = register_driver(DEVNAME, &g_ft80x_fops, 0666, priv);
if (ret < 0)
{
goto errout_with_interrupts;
}
return OK;
errout_with_interrupts:
lower->enable(lower, false);
ft80x_write_word(priv, FT80X_REG_INT_EN, FT80X_INT_DISABLE);
lower->attach(lower, NULL, NULL);
errout_with_sem:
sem_destroy(&priv->exclsem);
return ret;
}
开发者ID:AlexShiLucky,项目名称:NuttX,代码行数:84,代码来源:ft80x.c
示例13: nxterm_register
FAR struct nxterm_state_s *
nxterm_register(NXTERM handle, FAR struct nxterm_window_s *wndo,
FAR const struct nxterm_operations_s *ops, int minor)
{
FAR struct nxterm_state_s *priv;
FAR const struct nx_font_s *fontset;
char devname[NX_DEVNAME_SIZE];
NXHANDLE hfont;
int ret;
DEBUGASSERT(handle && wndo && ops && (unsigned)minor < 256);
/* Allocate the driver structure */
priv = (FAR struct nxterm_state_s *)kmm_zalloc(sizeof(struct nxterm_state_s));
if (!priv)
{
gerr("ERROR: Failed to allocate the NX driver structure\n");
return NULL;
}
/* Initialize the driver structure */
priv->ops = ops;
priv->handle = handle;
priv->minor = minor;
memcpy(&priv->wndo, wndo, sizeof(struct nxterm_window_s));
nxsem_init(&priv->exclsem, 0, 1);
#ifdef CONFIG_DEBUG_FEATURES
priv->holder = NO_HOLDER;
#endif
#ifdef CONFIG_NXTERM_NXKBDIN
/* The waitsem semaphore is used for signaling and, hence, should not have
* priority inheritance enabled.
*/
nxsem_init(&priv->waitsem, 0, 0);
nxsem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
#endif
/* Connect to the font cache for the configured font characteristics */
priv->fcache = nxf_cache_connect(wndo->fontid, wndo->fcolor[0],
wndo->wcolor[0], CONFIG_NXTERM_BPP,
CONFIG_NXTERM_CACHESIZE);
if (priv->fcache == NULL)
{
gerr("ERROR: Failed to connect to font cache for font ID %d: %d\n",
wndo->fontid, errno);
goto errout;
}
/* Get the handle of the font managed by the font cache */
hfont = nxf_cache_getfonthandle(priv->fcache);
if (hfont == NULL)
{
gerr("ERROR: Failed to get handlr for font ID %d: %d\n",
wndo->fontid, errno);
goto errout;
}
/* Get information about the font set being used and save this in the
* state structure
*/
fontset = nxf_getfontset(hfont);
priv->fheight = fontset->mxheight;
priv->fwidth = fontset->mxwidth;
priv->spwidth = fontset->spwidth;
/* Set up the text cache */
priv->maxchars = CONFIG_NXTERM_MXCHARS;
/* Set the initial display position */
nxterm_home(priv);
/* Show the cursor */
priv->cursor.code = CONFIG_NXTERM_CURSORCHAR;
nxterm_showcursor(priv);
/* Register the driver */
snprintf(devname, NX_DEVNAME_SIZE, NX_DEVNAME_FORMAT, minor);
ret = register_driver(devname, &g_nxterm_drvrops, 0666, priv);
if (ret < 0)
{
gerr("ERROR: Failed to register %s\n", devname);
}
return (NXTERM)priv;
errout:
kmm_free(priv);
return NULL;
//.........这里部分代码省略.........
开发者ID:dagar,项目名称:NuttX,代码行数:101,代码来源:nxterm_register.c
示例14: compass_hmc5883l_driver_init
static __init void compass_hmc5883l_driver_init(void)
{
register_driver(&compass_hmc5883l);
}
开发者ID:xboot,项目名称:xboot,代码行数:4,代码来源:compass-hmc5883l.c
示例15: motor_gpio_driver_init
static __init void motor_gpio_driver_init(void)
{
register_driver(&motor_gpio);
}
开发者ID:xboot,项目名称:xboot,代码行数:4,代码来源:motor-gpio.c
示例16: i2c_adap_imx_init
static int __init i2c_adap_imx_init(void)
{
return register_driver(&i2c_imx_driver);
}
开发者ID:cwyy,项目名称:barebox,代码行数:4,代码来源:i2c-imx.c
示例17: wdog_bcm2836_driver_init
static __init void wdog_bcm2836_driver_init(void)
{
register_driver(&wdog_bcm2836);
}
开发者ID:xboot,项目名称:xboot,代码行数:4,代码来源:wdog-bcm2836.c
示例18: mxs_mci_init_driver
static int mxs_mci_init_driver(void)
{
register_driver(&mxs_mci_driver);
return 0;
}
开发者ID:prpplague,项目名称:das_oszi_barebox,代码行数:5,代码来源:mxs.c
示例19: ramlog_sysloginit
int ramlog_sysloginit(void)
{
/* Register the syslog character driver */
return register_driver(CONFIG_SYSLOG_DEVPATH, &g_ramlogfops, 0666, &g_sysdev);
}
开发者ID:haywoodspartan,项目名称:nuttx,代码行数:6,代码来源:ramlog.c
示例20: miiphy_init
static int miiphy_init(void)
{
register_driver(&miiphy_drv);
return 0;
}
开发者ID:cwyy,项目名称:barebox,代码行数:5,代码来源:miiphy.c
注:本文中的register_driver函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论