Files
u-boot/include/linux/percpu_counter.h
Simon Glass 5029b8c91b ext4l: Add stubs from various other linux headers
Add stub headers for various Linux kernel interfaces that ext4 code
expects:

- sched.h: scheduler stubs (task_struct, cond_resched, yield)
- wait.h: wait queue stubs
- rwsem.h: read-write semaphore stubs
- percpu_counter.h: percpu counter implementation (single-threaded)
- random.h: random number stubs
- quotaops.h: disk quota operation stubs
- part_stat.h: partition statistics stubs
- prefetch.h: prefetch operation stubs
- sort.h: sort wrapper using stdlib qsort
- swap.h: swap/memory management stubs

Update compat.h to include new headers and remove duplicate
definitions.

Co-developed-by: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>

Series-to: concept
Cover-letter:
ext4l: Add Linux compatibility headers
This series extracts Linux kernel compatibility declarations from
include/linux/compat.h into their own header files, matching the
Linux kernel's organization. This makes it easier to port Linux
filesystem code to U-Boot and keeps the compatibility layer
maintainable.

The headers come from Linux v6.18

Headers added:
- export.h: EXPORT_SYMBOL macros
- stddef.h: sizeof_field() macro
- uaccess.h: copy_to/from_user stubs
- capability.h, cred.h, file.h, path.h, security.h, seq_file.h
- freezer.h: process freezer stubs
- slab.h, vmalloc.h: memory allocation
- module.h: kernel module stubs
- init.h: initcall macros
- kthread.h: kernel thread stubs
- timer.h, workqueue.h: timer and workqueue stubs
- sched.h, wait.h, rwsem.h: scheduler and synchronization
- percpu_counter.h, random.h, quotaops.h, part_stat.h, prefetch.h,
  sort.h, swap.h

All headers include appropriate copyright/author information from
the original Linux sources.
END
Series-links: 1:77
Series-version: 2

Signed-off-by: Simon Glass <simon.glass@canonical.com>
2025-12-17 14:01:22 +00:00

81 lines
1.6 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* A simple "approximate counter" for use in ext2 and ext3 superblocks.
*
* WARNING: these things are HUGE. 4 kbytes per counter on 32-way P4.
*
* Stub definitions for percpu counters.
* U-Boot is single-threaded, use simple counters.
*/
#ifndef _LINUX_PERCPU_COUNTER_H
#define _LINUX_PERCPU_COUNTER_H
#include <linux/types.h>
struct percpu_counter {
s64 count;
};
static inline int percpu_counter_init(struct percpu_counter *fbc, s64 amount,
gfp_t gfp)
{
fbc->count = amount;
return 0;
}
static inline void percpu_counter_destroy(struct percpu_counter *fbc)
{
}
static inline void percpu_counter_set(struct percpu_counter *fbc, s64 amount)
{
fbc->count = amount;
}
static inline void percpu_counter_add(struct percpu_counter *fbc, s64 amount)
{
fbc->count += amount;
}
static inline void percpu_counter_sub(struct percpu_counter *fbc, s64 amount)
{
fbc->count -= amount;
}
static inline void percpu_counter_inc(struct percpu_counter *fbc)
{
fbc->count++;
}
static inline void percpu_counter_dec(struct percpu_counter *fbc)
{
fbc->count--;
}
static inline s64 percpu_counter_read(struct percpu_counter *fbc)
{
return fbc->count;
}
static inline s64 percpu_counter_read_positive(struct percpu_counter *fbc)
{
return fbc->count > 0 ? fbc->count : 0;
}
static inline s64 percpu_counter_sum(struct percpu_counter *fbc)
{
return fbc->count;
}
static inline s64 percpu_counter_sum_positive(struct percpu_counter *fbc)
{
return fbc->count > 0 ? fbc->count : 0;
}
static inline bool percpu_counter_initialized(struct percpu_counter *fbc)
{
return true;
}
#endif /* _LINUX_PERCPU_COUNTER_H */