aboutsummaryrefslogtreecommitdiffstats
path: root/samples
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2012-04-01 15:30:01 -0400
committerTejun Heo <tj@kernel.org>2012-04-01 15:55:00 -0400
commit959d851caa48829eb85cb85aa949fd6b4c5d5bc6 (patch)
tree3ba9c94ec346275fb44c4f0d1cd2537cdff8d811 /samples
parenta5567932fc926739e29e98487128080f40c61710 (diff)
parent48ddbe194623ae089cc0576e60363f2d2e85662a (diff)
Merge branch 'for-3.5' of ../cgroup into block/for-3.5/core-merged
cgroup/for-3.5 contains the following changes which blk-cgroup needs to proceed with the on-going cleanup. * Dynamic addition and removal of cftypes to make config/stat file handling modular for policies. * cgroup removal update to not wait for css references to drain to fix blkcg removal hang caused by cfq caching cfqgs. Pull in cgroup/for-3.5 into block/for-3.5/core. This causes the following conflicts in block/blk-cgroup.c. * 761b3ef50e "cgroup: remove cgroup_subsys argument from callbacks" conflicts with blkiocg_pre_destroy() addition and blkiocg_attach() removal. Resolved by removing @subsys from all subsys methods. * 676f7c8f84 "cgroup: relocate cftype and cgroup_subsys definitions in controllers" conflicts with ->pre_destroy() and ->attach() updates and removal of modular config. Resolved by dropping forward declarations of the methods and applying updates to the relocated blkio_subsys. * 4baf6e3325 "cgroup: convert all non-memcg controllers to the new cftype interface" builds upon the previous item. Resolved by adding ->base_cftypes to the relocated blkio_subsys. Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'samples')
-rw-r--r--samples/Kconfig8
-rw-r--r--samples/Makefile2
-rw-r--r--samples/rpmsg/Makefile1
-rw-r--r--samples/rpmsg/rpmsg_client_sample.c100
4 files changed, 110 insertions, 1 deletions
diff --git a/samples/Kconfig b/samples/Kconfig
index 41063e7592d2..7b6792a18c05 100644
--- a/samples/Kconfig
+++ b/samples/Kconfig
@@ -61,4 +61,12 @@ config SAMPLE_KDB
61 Build an example of how to dynamically add the hello 61 Build an example of how to dynamically add the hello
62 command to the kdb shell. 62 command to the kdb shell.
63 63
64config SAMPLE_RPMSG_CLIENT
65 tristate "Build rpmsg client sample -- loadable modules only"
66 depends on RPMSG && m
67 help
68 Build an rpmsg client sample driver, which demonstrates how
69 to communicate with an AMP-configured remote processor over
70 the rpmsg bus.
71
64endif # SAMPLES 72endif # SAMPLES
diff --git a/samples/Makefile b/samples/Makefile
index 6280817c2b7e..2f75851ec629 100644
--- a/samples/Makefile
+++ b/samples/Makefile
@@ -1,4 +1,4 @@
1# Makefile for Linux samples code 1# Makefile for Linux samples code
2 2
3obj-$(CONFIG_SAMPLES) += kobject/ kprobes/ tracepoints/ trace_events/ \ 3obj-$(CONFIG_SAMPLES) += kobject/ kprobes/ tracepoints/ trace_events/ \
4 hw_breakpoint/ kfifo/ kdb/ hidraw/ 4 hw_breakpoint/ kfifo/ kdb/ hidraw/ rpmsg/
diff --git a/samples/rpmsg/Makefile b/samples/rpmsg/Makefile
new file mode 100644
index 000000000000..2d4973c69663
--- /dev/null
+++ b/samples/rpmsg/Makefile
@@ -0,0 +1 @@
obj-$(CONFIG_SAMPLE_RPMSG_CLIENT) += rpmsg_client_sample.o
diff --git a/samples/rpmsg/rpmsg_client_sample.c b/samples/rpmsg/rpmsg_client_sample.c
new file mode 100644
index 000000000000..23ea9f2ae11d
--- /dev/null
+++ b/samples/rpmsg/rpmsg_client_sample.c
@@ -0,0 +1,100 @@
1/*
2 * Remote processor messaging - sample client driver
3 *
4 * Copyright (C) 2011 Texas Instruments, Inc.
5 * Copyright (C) 2011 Google, Inc.
6 *
7 * Ohad Ben-Cohen <ohad@wizery.com>
8 * Brian Swetland <swetland@google.com>
9 *
10 * This software is licensed under the terms of the GNU General Public
11 * License version 2, as published by the Free Software Foundation, and
12 * may be copied, distributed, and modified under those terms.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 */
19
20#include <linux/kernel.h>
21#include <linux/module.h>
22#include <linux/rpmsg.h>
23
24#define MSG "hello world!"
25#define MSG_LIMIT 100
26
27static void rpmsg_sample_cb(struct rpmsg_channel *rpdev, void *data, int len,
28 void *priv, u32 src)
29{
30 int ret;
31 static int rx_count;
32
33 dev_info(&rpdev->dev, "incoming msg %d (src: 0x%x)\n", ++rx_count, src);
34
35 print_hex_dump(KERN_DEBUG, __func__, DUMP_PREFIX_NONE, 16, 1,
36 data, len, true);
37
38 /* samples should not live forever */
39 if (rx_count >= MSG_LIMIT) {
40 dev_info(&rpdev->dev, "goodbye!\n");
41 return;
42 }
43
44 /* send a new message now */
45 ret = rpmsg_send(rpdev, MSG, strlen(MSG));
46 if (ret)
47 dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret);
48}
49
50static int rpmsg_sample_probe(struct rpmsg_channel *rpdev)
51{
52 int ret;
53
54 dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n",
55 rpdev->src, rpdev->dst);
56
57 /* send a message to our remote processor */
58 ret = rpmsg_send(rpdev, MSG, strlen(MSG));
59 if (ret) {
60 dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret);
61 return ret;
62 }
63
64 return 0;
65}
66
67static void __devexit rpmsg_sample_remove(struct rpmsg_channel *rpdev)
68{
69 dev_info(&rpdev->dev, "rpmsg sample client driver is removed\n");
70}
71
72static struct rpmsg_device_id rpmsg_driver_sample_id_table[] = {
73 { .name = "rpmsg-client-sample" },
74 { },
75};
76MODULE_DEVICE_TABLE(rpmsg, rpmsg_driver_sample_id_table);
77
78static struct rpmsg_driver rpmsg_sample_client = {
79 .drv.name = KBUILD_MODNAME,
80 .drv.owner = THIS_MODULE,
81 .id_table = rpmsg_driver_sample_id_table,
82 .probe = rpmsg_sample_probe,
83 .callback = rpmsg_sample_cb,
84 .remove = __devexit_p(rpmsg_sample_remove),
85};
86
87static int __init rpmsg_client_sample_init(void)
88{
89 return register_rpmsg_driver(&rpmsg_sample_client);
90}
91module_init(rpmsg_client_sample_init);
92
93static void __exit rpmsg_client_sample_fini(void)
94{
95 unregister_rpmsg_driver(&rpmsg_sample_client);
96}
97module_exit(rpmsg_client_sample_fini);
98
99MODULE_DESCRIPTION("Remote processor messaging sample client driver");
100MODULE_LICENSE("GPL v2");