---
name: "printk"
section: "9"
platform: "linux"
package: "linux-manual-3.16"
version: "3.16.56-1+deb8u1"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/printk"
---

# printk(9)

print a kernel message

## NAME

printk - print a kernel message

## SYNOPSIS

**\_\_visible int printk(const char \*** *fmt***,** *...***);**

## ARGUMENTS

*fmt*

format string

*...*

variable arguments

## DESCRIPTION

This is **printk**. It can be called from any context. We want it to work.

We try to grab the console\_lock. If we succeed, it's easy - we log the output and call the console drivers. If we fail to get the semaphore, we place the output into the log buffer and return. The current holder of the console\_sem will notice the new output in **console\_unlock**; and will send it to the consoles before releasing the lock.

One effect of this deferred printing is that code which calls **printk** and then changes console\_loglevel may break. This is because console\_loglevel is inspected when the actual printing occurs.

## SEE ALSO

[printf(3)](/printf/3.md)

See the **vsnprintf** documentation for format string extensions over C99.

## COPYRIGHT
