tty: shrink the size of struct tty_struct by 40 bytes
It's been a long time since anyone has looked at what struct tty_struct looks like in memory, turns out there was a ton of holes. So move things around a bit, change one variable (closing) from being an int to a bool (it is only being tested for 0/1), and we end up saving 40 bytes per structure overall on x86-64 systems. Before this patch: /* size: 696, cachelines: 11, members: 37 */ /* sum members: 665, holes: 8, sum holes: 31 */ /* forced alignments: 2, forced holes: 1, sum forced holes: 4 */ /* last cacheline: 56 bytes */ After this change: /* size: 656, cachelines: 11, members: 37 */ /* sum members: 654, holes: 1, sum holes: 2 */ /* forced alignments: 2 */ /* last cacheline: 16 bytes */ Cc: Jiri Slaby <jirislaby@kernel.org> Link: https://lore.kernel.org/r/2023082519-cobbler-unholy-8d1f@gregkh Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a84853c595
commit
ebf05c7dc9
|
@ -192,13 +192,14 @@ struct tty_operations;
|
|||
*/
|
||||
struct tty_struct {
|
||||
struct kref kref;
|
||||
int index;
|
||||
struct device *dev;
|
||||
struct tty_driver *driver;
|
||||
struct tty_port *port;
|
||||
const struct tty_operations *ops;
|
||||
int index;
|
||||
|
||||
struct ld_semaphore ldisc_sem;
|
||||
struct tty_ldisc *ldisc;
|
||||
struct ld_semaphore ldisc_sem;
|
||||
|
||||
struct mutex atomic_write_lock;
|
||||
struct mutex legacy_mutex;
|
||||
|
@ -209,6 +210,7 @@ struct tty_struct {
|
|||
char name[64];
|
||||
unsigned long flags;
|
||||
int count;
|
||||
unsigned int receive_room;
|
||||
struct winsize winsize;
|
||||
|
||||
struct {
|
||||
|
@ -219,16 +221,16 @@ struct tty_struct {
|
|||
} __aligned(sizeof(unsigned long)) flow;
|
||||
|
||||
struct {
|
||||
spinlock_t lock;
|
||||
struct pid *pgrp;
|
||||
struct pid *session;
|
||||
spinlock_t lock;
|
||||
unsigned char pktstatus;
|
||||
bool packet;
|
||||
unsigned long unused[0];
|
||||
} __aligned(sizeof(unsigned long)) ctrl;
|
||||
|
||||
bool hw_stopped;
|
||||
unsigned int receive_room;
|
||||
bool closing;
|
||||
int flow_change;
|
||||
|
||||
struct tty_struct *link;
|
||||
|
@ -239,15 +241,13 @@ struct tty_struct {
|
|||
void *disc_data;
|
||||
void *driver_data;
|
||||
spinlock_t files_lock;
|
||||
int write_cnt;
|
||||
unsigned char *write_buf;
|
||||
|
||||
struct list_head tty_files;
|
||||
|
||||
#define N_TTY_BUF_SIZE 4096
|
||||
|
||||
int closing;
|
||||
unsigned char *write_buf;
|
||||
int write_cnt;
|
||||
struct work_struct SAK_work;
|
||||
struct tty_port *port;
|
||||
} __randomize_layout;
|
||||
|
||||
/* Each of a tty's open files has private_data pointing to tty_file_private */
|
||||
|
|
Loading…
Reference in New Issue