Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  rpmsg_client_sample.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Remote processor messaging - sample client driver
 *
 * Copyright (C) 2011 Texas Instruments, Inc.
 * Copyright (C) 2011 Google, Inc.
 *
 * Ohad Ben-Cohen <ohad@wizery.com>
 * Brian Swetland <swetland@google.com>
 */


#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/rpmsg.h>

#define MSG  "hello world!"

static int count = 100;
module_param(count, int, 0644);

struct instance_data {
 int rx_count;
};

static int rpmsg_sample_cb(struct rpmsg_device *rpdev, void *data, int len,
      void *priv, u32 src)
{
 int ret;
 struct instance_data *idata = dev_get_drvdata(&rpdev->dev);

 dev_info(&rpdev->dev, "incoming msg %d (src: 0x%x)\n",
   ++idata->rx_count, src);

 print_hex_dump_debug(__func__, DUMP_PREFIX_NONE, 16, 1, data, len,
        true);

 /* samples should not live forever */
 if (idata->rx_count >= count) {
  dev_info(&rpdev->dev, "goodbye!\n");
  return 0;
 }

 /* send a new message now */
 ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG));
 if (ret)
  dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret);

 return 0;
}

static int rpmsg_sample_probe(struct rpmsg_device *rpdev)
{
 int ret;
 struct instance_data *idata;

 dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n",
     rpdev->src, rpdev->dst);

 idata = devm_kzalloc(&rpdev->dev, sizeof(*idata), GFP_KERNEL);
 if (!idata)
  return -ENOMEM;

 dev_set_drvdata(&rpdev->dev, idata);

 /* send a message to our remote processor */
 ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG));
 if (ret) {
  dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret);
  return ret;
 }

 return 0;
}

static void rpmsg_sample_remove(struct rpmsg_device *rpdev)
{
 dev_info(&rpdev->dev, "rpmsg sample client driver is removed\n");
}

static struct rpmsg_device_id rpmsg_driver_sample_id_table[] = {
 { .name = "rpmsg-client-sample" },
 { },
};
MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_sample_id_table);

static struct rpmsg_driver rpmsg_sample_client = {
 .drv.name = KBUILD_MODNAME,
 .id_table = rpmsg_driver_sample_id_table,
 .probe  = rpmsg_sample_probe,
 .callback = rpmsg_sample_cb,
 .remove  = rpmsg_sample_remove,
};
module_rpmsg_driver(rpmsg_sample_client);

MODULE_DESCRIPTION("Remote processor messaging sample client driver");
MODULE_LICENSE("GPL v2");

Messung V0.5
C=91 H=93 G=91

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge