Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

  • 7c8c5e3
  • /
  • samples
  • /
  • trace_printk
  • /
  • trace-printk.c
Raw File Download
Permalinks

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
content badge Iframe embedding
swh:1:cnt:e9e0040ff7be25a9953a65a30293f3b63b386444
directory badge Iframe embedding
swh:1:dir:e09e5b649e43fd12a1eae5a9bbda43bacea66ec5
Citations

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
trace-printk.c
#include <linux/module.h>
#include <linux/kthread.h>
#include <linux/irq_work.h>

/* Must not be static to force gcc to consider these non constant */
char *trace_printk_test_global_str =
	"This is a dynamic string that will use trace_puts\n";

char *trace_printk_test_global_str_irq =
	"(irq) This is a dynamic string that will use trace_puts\n";

char *trace_printk_test_global_str_fmt =
	"%sThis is a %s that will use trace_printk\n";

static struct irq_work irqwork;

static void trace_printk_irq_work(struct irq_work *work)
{
	trace_printk("(irq) This is a static string that will use trace_bputs\n");
	trace_printk(trace_printk_test_global_str_irq);

	trace_printk("(irq) This is a %s that will use trace_bprintk()\n",
		     "static string");

	trace_printk(trace_printk_test_global_str_fmt,
		     "(irq) ", "dynamic string");
}

static int __init trace_printk_init(void)
{
	init_irq_work(&irqwork, trace_printk_irq_work);

	trace_printk("This is a static string that will use trace_bputs\n");
	trace_printk(trace_printk_test_global_str);

	/* Kick off printing in irq context */
	irq_work_queue(&irqwork);

	trace_printk("This is a %s that will use trace_bprintk()\n",
		     "static string");

	trace_printk(trace_printk_test_global_str_fmt, "", "dynamic string");

	return 0;
}

static void __exit trace_printk_exit(void)
{
}

module_init(trace_printk_init);
module_exit(trace_printk_exit);

MODULE_AUTHOR("Steven Rostedt");
MODULE_DESCRIPTION("trace-printk");
MODULE_LICENSE("GPL");

Software Heritage — Copyright (C) 2015–2025, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Contact— JavaScript license information— Web API

back to top