diff options
| author | Stefani Seibold <stefani@seibold.net> | 2013-11-14 17:32:17 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-14 19:32:23 -0500 |
| commit | 498d319bb512992ef0784c278fa03679f2f5649d (patch) | |
| tree | 2793b41c3a98b858d24aa833ccc2bfb2f6d60974 | |
| parent | a019e48cfbfb358786326db3dbc1c565b8f14a56 (diff) | |
kfifo API type safety
This patch enhances the type safety for the kfifo API. It is now safe
to put const data into a non const FIFO and the API will now generate a
compiler warning when reading from the fifo where the destination
address is pointing to a const variable.
As a side effect the kfifo_put() does now expect the value of an element
instead a pointer to the element. This was suggested Russell King. It
make the handling of the kfifo_put easier since there is no need to
create a helper variable for getting the address of a pointer or to pass
integers of different sizes.
IMHO the API break is okay, since there are currently only six users of
kfifo_put().
The code is also cleaner by kicking out the "if (0)" expressions.
[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Stefani Seibold <stefani@seibold.net>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | drivers/gpu/drm/drm_flip_work.c | 2 | ||||
| -rw-r--r-- | drivers/iio/industrialio-event.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2800mmio.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2800usb.c | 2 | ||||
| -rw-r--r-- | drivers/pci/pcie/aer/aerdrv_core.c | 2 | ||||
| -rw-r--r-- | include/linux/kfifo.h | 47 | ||||
| -rw-r--r-- | mm/memory-failure.c | 2 | ||||
| -rw-r--r-- | samples/kfifo/bytestream-example.c | 4 | ||||
| -rw-r--r-- | samples/kfifo/dma-example.c | 2 | ||||
| -rw-r--r-- | samples/kfifo/inttype-example.c | 4 |
10 files changed, 25 insertions, 44 deletions
diff --git a/drivers/gpu/drm/drm_flip_work.c b/drivers/gpu/drm/drm_flip_work.c index e788882d9021..f9c7fa3d0012 100644 --- a/drivers/gpu/drm/drm_flip_work.c +++ b/drivers/gpu/drm/drm_flip_work.c | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | */ | 34 | */ |
| 35 | void drm_flip_work_queue(struct drm_flip_work *work, void *val) | 35 | void drm_flip_work_queue(struct drm_flip_work *work, void *val) |
| 36 | { | 36 | { |
| 37 | if (kfifo_put(&work->fifo, (const void **)&val)) { | 37 | if (kfifo_put(&work->fifo, val)) { |
| 38 | atomic_inc(&work->pending); | 38 | atomic_inc(&work->pending); |
| 39 | } else { | 39 | } else { |
| 40 | DRM_ERROR("%s fifo full!\n", work->name); | 40 | DRM_ERROR("%s fifo full!\n", work->name); |
diff --git a/drivers/iio/industrialio-event.c b/drivers/iio/industrialio-event.c index dac15b9f9df8..c10eab64bc05 100644 --- a/drivers/iio/industrialio-event.c +++ b/drivers/iio/industrialio-event.c | |||
| @@ -56,7 +56,7 @@ int iio_push_event(struct iio_dev *indio_dev, u64 ev_code, s64 timestamp) | |||
| 56 | ev.id = ev_code; | 56 | ev.id = ev_code; |
| 57 | ev.timestamp = timestamp; | 57 | ev.timestamp = timestamp; |
| 58 | 58 | ||
| 59 | copied = kfifo_put(&ev_int->det_events, &ev); | 59 | copied = kfifo_put(&ev_int->det_events, ev); |
| 60 | if (copied != 0) | 60 | if (copied != 0) |
| 61 | wake_up_locked_poll(&ev_int->wait, POLLIN); | 61 | wake_up_locked_poll(&ev_int->wait, POLLIN); |
| 62 | } | 62 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2800mmio.c b/drivers/net/wireless/rt2x00/rt2800mmio.c index ae152280e071..a8cc736b5063 100644 --- a/drivers/net/wireless/rt2x00/rt2800mmio.c +++ b/drivers/net/wireless/rt2x00/rt2800mmio.c | |||
| @@ -446,7 +446,7 @@ static void rt2800mmio_txstatus_interrupt(struct rt2x00_dev *rt2x00dev) | |||
| 446 | if (!rt2x00_get_field32(status, TX_STA_FIFO_VALID)) | 446 | if (!rt2x00_get_field32(status, TX_STA_FIFO_VALID)) |
| 447 | break; | 447 | break; |
| 448 | 448 | ||
| 449 | if (!kfifo_put(&rt2x00dev->txstatus_fifo, &status)) { | 449 | if (!kfifo_put(&rt2x00dev->txstatus_fifo, status)) { |
| 450 | rt2x00_warn(rt2x00dev, "TX status FIFO overrun, drop tx status report\n"); | 450 | rt2x00_warn(rt2x00dev, "TX status FIFO overrun, drop tx status report\n"); |
| 451 | break; | 451 | break; |
| 452 | } | 452 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c index 997df03a0c2e..a81ceb61d746 100644 --- a/drivers/net/wireless/rt2x00/rt2800usb.c +++ b/drivers/net/wireless/rt2x00/rt2800usb.c | |||
| @@ -164,7 +164,7 @@ static bool rt2800usb_tx_sta_fifo_read_completed(struct rt2x00_dev *rt2x00dev, | |||
| 164 | 164 | ||
| 165 | valid = rt2x00_get_field32(tx_status, TX_STA_FIFO_VALID); | 165 | valid = rt2x00_get_field32(tx_status, TX_STA_FIFO_VALID); |
| 166 | if (valid) { | 166 | if (valid) { |
| 167 | if (!kfifo_put(&rt2x00dev->txstatus_fifo, &tx_status)) | 167 | if (!kfifo_put(&rt2x00dev->txstatus_fifo, tx_status)) |
| 168 | rt2x00_warn(rt2x00dev, "TX status FIFO overrun\n"); | 168 | rt2x00_warn(rt2x00dev, "TX status FIFO overrun\n"); |
| 169 | 169 | ||
| 170 | queue_work(rt2x00dev->workqueue, &rt2x00dev->txdone_work); | 170 | queue_work(rt2x00dev->workqueue, &rt2x00dev->txdone_work); |
diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c index 85ca36f2136d..6b3a958e1be6 100644 --- a/drivers/pci/pcie/aer/aerdrv_core.c +++ b/drivers/pci/pcie/aer/aerdrv_core.c | |||
| @@ -574,7 +574,7 @@ void aer_recover_queue(int domain, unsigned int bus, unsigned int devfn, | |||
| 574 | }; | 574 | }; |
| 575 | 575 | ||
| 576 | spin_lock_irqsave(&aer_recover_ring_lock, flags); | 576 | spin_lock_irqsave(&aer_recover_ring_lock, flags); |
| 577 | if (kfifo_put(&aer_recover_ring, &entry)) | 577 | if (kfifo_put(&aer_recover_ring, entry)) |
| 578 | schedule_work(&aer_recover_work); | 578 | schedule_work(&aer_recover_work); |
| 579 | else | 579 | else |
| 580 | pr_err("AER recover: Buffer overflow when recovering AER for %04x:%02x:%02x:%x\n", | 580 | pr_err("AER recover: Buffer overflow when recovering AER for %04x:%02x:%02x:%x\n", |
diff --git a/include/linux/kfifo.h b/include/linux/kfifo.h index 10308c6a3d1c..552d51efb429 100644 --- a/include/linux/kfifo.h +++ b/include/linux/kfifo.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * A generic kernel FIFO implementation | 2 | * A generic kernel FIFO implementation |
| 3 | * | 3 | * |
| 4 | * Copyright (C) 2009/2010 Stefani Seibold <stefani@seibold.net> | 4 | * Copyright (C) 2013 Stefani Seibold <stefani@seibold.net> |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify | 6 | * This program is free software; you can redistribute it and/or modify |
| 7 | * it under the terms of the GNU General Public License as published by | 7 | * it under the terms of the GNU General Public License as published by |
| @@ -67,9 +67,10 @@ struct __kfifo { | |||
| 67 | union { \ | 67 | union { \ |
| 68 | struct __kfifo kfifo; \ | 68 | struct __kfifo kfifo; \ |
| 69 | datatype *type; \ | 69 | datatype *type; \ |
| 70 | const datatype *const_type; \ | ||
| 70 | char (*rectype)[recsize]; \ | 71 | char (*rectype)[recsize]; \ |
| 71 | ptrtype *ptr; \ | 72 | ptrtype *ptr; \ |
| 72 | const ptrtype *ptr_const; \ | 73 | ptrtype const *ptr_const; \ |
| 73 | } | 74 | } |
| 74 | 75 | ||
| 75 | #define __STRUCT_KFIFO(type, size, recsize, ptrtype) \ | 76 | #define __STRUCT_KFIFO(type, size, recsize, ptrtype) \ |
| @@ -386,16 +387,12 @@ __kfifo_int_must_check_helper( \ | |||
| 386 | #define kfifo_put(fifo, val) \ | 387 | #define kfifo_put(fifo, val) \ |
| 387 | ({ \ | 388 | ({ \ |
| 388 | typeof((fifo) + 1) __tmp = (fifo); \ | 389 | typeof((fifo) + 1) __tmp = (fifo); \ |
| 389 | typeof((val) + 1) __val = (val); \ | 390 | typeof(*__tmp->const_type) __val = (val); \ |
| 390 | unsigned int __ret; \ | 391 | unsigned int __ret; \ |
| 391 | const size_t __recsize = sizeof(*__tmp->rectype); \ | 392 | size_t __recsize = sizeof(*__tmp->rectype); \ |
| 392 | struct __kfifo *__kfifo = &__tmp->kfifo; \ | 393 | struct __kfifo *__kfifo = &__tmp->kfifo; \ |
| 393 | if (0) { \ | ||
| 394 | typeof(__tmp->ptr_const) __dummy __attribute__ ((unused)); \ | ||
| 395 | __dummy = (typeof(__val))NULL; \ | ||
| 396 | } \ | ||
| 397 | if (__recsize) \ | 394 | if (__recsize) \ |
| 398 | __ret = __kfifo_in_r(__kfifo, __val, sizeof(*__val), \ | 395 | __ret = __kfifo_in_r(__kfifo, &__val, sizeof(__val), \ |
| 399 | __recsize); \ | 396 | __recsize); \ |
| 400 | else { \ | 397 | else { \ |
| 401 | __ret = !kfifo_is_full(__tmp); \ | 398 | __ret = !kfifo_is_full(__tmp); \ |
| @@ -404,7 +401,7 @@ __kfifo_int_must_check_helper( \ | |||
| 404 | ((typeof(__tmp->type))__kfifo->data) : \ | 401 | ((typeof(__tmp->type))__kfifo->data) : \ |
| 405 | (__tmp->buf) \ | 402 | (__tmp->buf) \ |
| 406 | )[__kfifo->in & __tmp->kfifo.mask] = \ | 403 | )[__kfifo->in & __tmp->kfifo.mask] = \ |
| 407 | *(typeof(__tmp->type))__val; \ | 404 | (typeof(*__tmp->type))__val; \ |
| 408 | smp_wmb(); \ | 405 | smp_wmb(); \ |
| 409 | __kfifo->in++; \ | 406 | __kfifo->in++; \ |
| 410 | } \ | 407 | } \ |
| @@ -415,7 +412,7 @@ __kfifo_int_must_check_helper( \ | |||
| 415 | /** | 412 | /** |
| 416 | * kfifo_get - get data from the fifo | 413 | * kfifo_get - get data from the fifo |
| 417 | * @fifo: address of the fifo to be used | 414 | * @fifo: address of the fifo to be used |
| 418 | * @val: the var where to store the data to be added | 415 | * @val: address where to store the data |
| 419 | * | 416 | * |
| 420 | * This macro reads the data from the fifo. | 417 | * This macro reads the data from the fifo. |
| 421 | * It returns 0 if the fifo was empty. Otherwise it returns the number | 418 | * It returns 0 if the fifo was empty. Otherwise it returns the number |
| @@ -428,12 +425,10 @@ __kfifo_int_must_check_helper( \ | |||
| 428 | __kfifo_uint_must_check_helper( \ | 425 | __kfifo_uint_must_check_helper( \ |
| 429 | ({ \ | 426 | ({ \ |
| 430 | typeof((fifo) + 1) __tmp = (fifo); \ | 427 | typeof((fifo) + 1) __tmp = (fifo); \ |
| 431 | typeof((val) + 1) __val = (val); \ | 428 | typeof(__tmp->ptr) __val = (val); \ |
| 432 | unsigned int __ret; \ | 429 | unsigned int __ret; \ |
| 433 | const size_t __recsize = sizeof(*__tmp->rectype); \ | 430 | const size_t __recsize = sizeof(*__tmp->rectype); \ |
| 434 | struct __kfifo *__kfifo = &__tmp->kfifo; \ | 431 | struct __kfifo *__kfifo = &__tmp->kfifo; \ |
| 435 | if (0) \ | ||
| 436 | __val = (typeof(__tmp->ptr))0; \ | ||
| 437 | if (__recsize) \ | 432 | if (__recsize) \ |
| 438 | __ret = __kfifo_out_r(__kfifo, __val, sizeof(*__val), \ | 433 | __ret = __kfifo_out_r(__kfifo, __val, sizeof(*__val), \ |
| 439 | __recsize); \ | 434 | __recsize); \ |
| @@ -456,7 +451,7 @@ __kfifo_uint_must_check_helper( \ | |||
| 456 | /** | 451 | /** |
| 457 | * kfifo_peek - get data from the fifo without removing | 452 | * kfifo_peek - get data from the fifo without removing |
| 458 | * @fifo: address of the fifo to be used | 453 | * @fifo: address of the fifo to be used |
| 459 | * @val: the var where to store the data to be added | 454 | * @val: address where to store the data |
| 460 | * | 455 | * |
| 461 | * This reads the data from the fifo without removing it from the fifo. | 456 | * This reads the data from the fifo without removing it from the fifo. |
| 462 | * It returns 0 if the fifo was empty. Otherwise it returns the number | 457 | * It returns 0 if the fifo was empty. Otherwise it returns the number |
| @@ -469,12 +464,10 @@ __kfifo_uint_must_check_helper( \ | |||
| 469 | __kfifo_uint_must_check_helper( \ | 464 | __kfifo_uint_must_check_helper( \ |
| 470 | ({ \ | 465 | ({ \ |
| 471 | typeof((fifo) + 1) __tmp = (fifo); \ | 466 | typeof((fifo) + 1) __tmp = (fifo); \ |
| 472 | typeof((val) + 1) __val = (val); \ | 467 | typeof(__tmp->ptr) __val = (val); \ |
| 473 | unsigned int __ret; \ | 468 | unsigned int __ret; \ |
| 474 | const size_t __recsize = sizeof(*__tmp->rectype); \ | 469 | const size_t __recsize = sizeof(*__tmp->rectype); \ |
| 475 | struct __kfifo *__kfifo = &__tmp->kfifo; \ | 470 | struct __kfifo *__kfifo = &__tmp->kfifo; \ |
| 476 | if (0) \ | ||
| 477 | __val = (typeof(__tmp->ptr))NULL; \ | ||
| 478 | if (__recsize) \ | 471 | if (__recsize) \ |
| 479 | __ret = __kfifo_out_peek_r(__kfifo, __val, sizeof(*__val), \ | 472 | __ret = __kfifo_out_peek_r(__kfifo, __val, sizeof(*__val), \ |
| 480 | __recsize); \ | 473 | __recsize); \ |
| @@ -508,14 +501,10 @@ __kfifo_uint_must_check_helper( \ | |||
| 508 | #define kfifo_in(fifo, buf, n) \ | 501 | #define kfifo_in(fifo, buf, n) \ |
| 509 | ({ \ | 502 | ({ \ |
| 510 | typeof((fifo) + 1) __tmp = (fifo); \ | 503 | typeof((fifo) + 1) __tmp = (fifo); \ |
| 511 | typeof((buf) + 1) __buf = (buf); \ | 504 | typeof(__tmp->ptr_const) __buf = (buf); \ |
| 512 | unsigned long __n = (n); \ | 505 | unsigned long __n = (n); \ |
| 513 | const size_t __recsize = sizeof(*__tmp->rectype); \ | 506 | const size_t __recsize = sizeof(*__tmp->rectype); \ |
| 514 | struct __kfifo *__kfifo = &__tmp->kfifo; \ | 507 | struct __kfifo *__kfifo = &__tmp->kfifo; \ |
| 515 | if (0) { \ | ||
| 516 | typeof(__tmp->ptr_const) __dummy __attribute__ ((unused)); \ | ||
| 517 | __dummy = (typeof(__buf))NULL; \ | ||
| 518 | } \ | ||
| 519 | (__recsize) ?\ | 508 | (__recsize) ?\ |
| 520 | __kfifo_in_r(__kfifo, __buf, __n, __recsize) : \ | 509 | __kfifo_in_r(__kfifo, __buf, __n, __recsize) : \ |
| 521 | __kfifo_in(__kfifo, __buf, __n); \ | 510 | __kfifo_in(__kfifo, __buf, __n); \ |
| @@ -561,14 +550,10 @@ __kfifo_uint_must_check_helper( \ | |||
| 561 | __kfifo_uint_must_check_helper( \ | 550 | __kfifo_uint_must_check_helper( \ |
| 562 | ({ \ | 551 | ({ \ |
| 563 | typeof((fifo) + 1) __tmp = (fifo); \ | 552 | typeof((fifo) + 1) __tmp = (fifo); \ |
| 564 | typeof((buf) + 1) __buf = (buf); \ | 553 | typeof(__tmp->ptr) __buf = (buf); \ |
| 565 | unsigned long __n = (n); \ | 554 | unsigned long __n = (n); \ |
| 566 | const size_t __recsize = sizeof(*__tmp->rectype); \ | 555 | const size_t __recsize = sizeof(*__tmp->rectype); \ |
| 567 | struct __kfifo *__kfifo = &__tmp->kfifo; \ | 556 | struct __kfifo *__kfifo = &__tmp->kfifo; \ |
| 568 | if (0) { \ | ||
| 569 | typeof(__tmp->ptr) __dummy = NULL; \ | ||
| 570 | __buf = __dummy; \ | ||
| 571 | } \ | ||
| 572 | (__recsize) ?\ | 557 | (__recsize) ?\ |
| 573 | __kfifo_out_r(__kfifo, __buf, __n, __recsize) : \ | 558 | __kfifo_out_r(__kfifo, __buf, __n, __recsize) : \ |
| 574 | __kfifo_out(__kfifo, __buf, __n); \ | 559 | __kfifo_out(__kfifo, __buf, __n); \ |
| @@ -773,14 +758,10 @@ __kfifo_uint_must_check_helper( \ | |||
| 773 | __kfifo_uint_must_check_helper( \ | 758 | __kfifo_uint_must_check_helper( \ |
| 774 | ({ \ | 759 | ({ \ |
| 775 | typeof((fifo) + 1) __tmp = (fifo); \ | 760 | typeof((fifo) + 1) __tmp = (fifo); \ |
| 776 | typeof((buf) + 1) __buf = (buf); \ | 761 | typeof(__tmp->ptr) __buf = (buf); \ |
| 777 | unsigned long __n = (n); \ | 762 | unsigned long __n = (n); \ |
| 778 | const size_t __recsize = sizeof(*__tmp->rectype); \ | 763 | const size_t __recsize = sizeof(*__tmp->rectype); \ |
| 779 | struct __kfifo *__kfifo = &__tmp->kfifo; \ | 764 | struct __kfifo *__kfifo = &__tmp->kfifo; \ |
| 780 | if (0) { \ | ||
| 781 | typeof(__tmp->ptr) __dummy __attribute__ ((unused)) = NULL; \ | ||
| 782 | __buf = __dummy; \ | ||
| 783 | } \ | ||
| 784 | (__recsize) ? \ | 765 | (__recsize) ? \ |
| 785 | __kfifo_out_peek_r(__kfifo, __buf, __n, __recsize) : \ | 766 | __kfifo_out_peek_r(__kfifo, __buf, __n, __recsize) : \ |
| 786 | __kfifo_out_peek(__kfifo, __buf, __n); \ | 767 | __kfifo_out_peek(__kfifo, __buf, __n); \ |
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index f9d78ec7831f..b7c171602ba1 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c | |||
| @@ -1269,7 +1269,7 @@ void memory_failure_queue(unsigned long pfn, int trapno, int flags) | |||
| 1269 | 1269 | ||
| 1270 | mf_cpu = &get_cpu_var(memory_failure_cpu); | 1270 | mf_cpu = &get_cpu_var(memory_failure_cpu); |
| 1271 | spin_lock_irqsave(&mf_cpu->lock, proc_flags); | 1271 | spin_lock_irqsave(&mf_cpu->lock, proc_flags); |
| 1272 | if (kfifo_put(&mf_cpu->fifo, &entry)) | 1272 | if (kfifo_put(&mf_cpu->fifo, entry)) |
| 1273 | schedule_work_on(smp_processor_id(), &mf_cpu->work); | 1273 | schedule_work_on(smp_processor_id(), &mf_cpu->work); |
| 1274 | else | 1274 | else |
| 1275 | pr_err("Memory failure: buffer overflow when queuing memory failure at %#lx\n", | 1275 | pr_err("Memory failure: buffer overflow when queuing memory failure at %#lx\n", |
diff --git a/samples/kfifo/bytestream-example.c b/samples/kfifo/bytestream-example.c index cfe40addda76..2fca916d9edf 100644 --- a/samples/kfifo/bytestream-example.c +++ b/samples/kfifo/bytestream-example.c | |||
| @@ -64,7 +64,7 @@ static int __init testfunc(void) | |||
| 64 | 64 | ||
| 65 | /* put values into the fifo */ | 65 | /* put values into the fifo */ |
| 66 | for (i = 0; i != 10; i++) | 66 | for (i = 0; i != 10; i++) |
| 67 | kfifo_put(&test, &i); | 67 | kfifo_put(&test, i); |
| 68 | 68 | ||
| 69 | /* show the number of used elements */ | 69 | /* show the number of used elements */ |
| 70 | printk(KERN_INFO "fifo len: %u\n", kfifo_len(&test)); | 70 | printk(KERN_INFO "fifo len: %u\n", kfifo_len(&test)); |
| @@ -85,7 +85,7 @@ static int __init testfunc(void) | |||
| 85 | kfifo_skip(&test); | 85 | kfifo_skip(&test); |
| 86 | 86 | ||
| 87 | /* put values into the fifo until is full */ | 87 | /* put values into the fifo until is full */ |
| 88 | for (i = 20; kfifo_put(&test, &i); i++) | 88 | for (i = 20; kfifo_put(&test, i); i++) |
| 89 | ; | 89 | ; |
| 90 | 90 | ||
| 91 | printk(KERN_INFO "queue len: %u\n", kfifo_len(&test)); | 91 | printk(KERN_INFO "queue len: %u\n", kfifo_len(&test)); |
diff --git a/samples/kfifo/dma-example.c b/samples/kfifo/dma-example.c index 06473791c08a..aa243db93f01 100644 --- a/samples/kfifo/dma-example.c +++ b/samples/kfifo/dma-example.c | |||
| @@ -39,7 +39,7 @@ static int __init example_init(void) | |||
| 39 | kfifo_in(&fifo, "test", 4); | 39 | kfifo_in(&fifo, "test", 4); |
| 40 | 40 | ||
| 41 | for (i = 0; i != 9; i++) | 41 | for (i = 0; i != 9; i++) |
| 42 | kfifo_put(&fifo, &i); | 42 | kfifo_put(&fifo, i); |
| 43 | 43 | ||
| 44 | /* kick away first byte */ | 44 | /* kick away first byte */ |
| 45 | kfifo_skip(&fifo); | 45 | kfifo_skip(&fifo); |
diff --git a/samples/kfifo/inttype-example.c b/samples/kfifo/inttype-example.c index 6f8e79e76c9e..8dc3c2e7105a 100644 --- a/samples/kfifo/inttype-example.c +++ b/samples/kfifo/inttype-example.c | |||
| @@ -61,7 +61,7 @@ static int __init testfunc(void) | |||
| 61 | 61 | ||
| 62 | /* put values into the fifo */ | 62 | /* put values into the fifo */ |
| 63 | for (i = 0; i != 10; i++) | 63 | for (i = 0; i != 10; i++) |
| 64 | kfifo_put(&test, &i); | 64 | kfifo_put(&test, i); |
| 65 | 65 | ||
| 66 | /* show the number of used elements */ | 66 | /* show the number of used elements */ |
| 67 | printk(KERN_INFO "fifo len: %u\n", kfifo_len(&test)); | 67 | printk(KERN_INFO "fifo len: %u\n", kfifo_len(&test)); |
| @@ -78,7 +78,7 @@ static int __init testfunc(void) | |||
| 78 | kfifo_skip(&test); | 78 | kfifo_skip(&test); |
| 79 | 79 | ||
| 80 | /* put values into the fifo until is full */ | 80 | /* put values into the fifo until is full */ |
| 81 | for (i = 20; kfifo_put(&test, &i); i++) | 81 | for (i = 20; kfifo_put(&test, i); i++) |
| 82 | ; | 82 | ; |
| 83 | 83 | ||
| 84 | printk(KERN_INFO "queue len: %u\n", kfifo_len(&test)); | 84 | printk(KERN_INFO "queue len: %u\n", kfifo_len(&test)); |
