salinfo.c (dca3a783400a18e2bf4503b1d4a85c4d0ca1a7e4) | salinfo.c (d9dda78bad879595d8c4220a067fc029d6484a16) |
---|---|
1/* 2 * salinfo.c 3 * 4 * Creates entries in /proc/sal for various system features. 5 * 6 * Copyright (c) 2003, 2006 Silicon Graphics, Inc. All rights reserved. 7 * Copyright (c) 2003 Hewlett-Packard Co 8 * Bjorn Helgaas <bjorn.helgaas@hp.com> --- 287 unchanged lines hidden (view full) --- 296 if (!capable(CAP_SYS_ADMIN)) 297 return -EPERM; 298 return 0; 299} 300 301static ssize_t 302salinfo_event_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos) 303{ | 1/* 2 * salinfo.c 3 * 4 * Creates entries in /proc/sal for various system features. 5 * 6 * Copyright (c) 2003, 2006 Silicon Graphics, Inc. All rights reserved. 7 * Copyright (c) 2003 Hewlett-Packard Co 8 * Bjorn Helgaas <bjorn.helgaas@hp.com> --- 287 unchanged lines hidden (view full) --- 296 if (!capable(CAP_SYS_ADMIN)) 297 return -EPERM; 298 return 0; 299} 300 301static ssize_t 302salinfo_event_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos) 303{ |
304 struct inode *inode = file_inode(file); 305 struct proc_dir_entry *entry = PDE(inode); 306 struct salinfo_data *data = entry->data; | 304 struct salinfo_data *data = PDE_DATA(file_inode(file)); |
307 char cmd[32]; 308 size_t size; 309 int i, n, cpu = -1; 310 311retry: 312 if (cpus_empty(data->cpu_event) && down_trylock(&data->mutex)) { 313 if (file->f_flags & O_NONBLOCK) 314 return -EAGAIN; --- 40 unchanged lines hidden (view full) --- 355 .open = salinfo_event_open, 356 .read = salinfo_event_read, 357 .llseek = noop_llseek, 358}; 359 360static int 361salinfo_log_open(struct inode *inode, struct file *file) 362{ | 305 char cmd[32]; 306 size_t size; 307 int i, n, cpu = -1; 308 309retry: 310 if (cpus_empty(data->cpu_event) && down_trylock(&data->mutex)) { 311 if (file->f_flags & O_NONBLOCK) 312 return -EAGAIN; --- 40 unchanged lines hidden (view full) --- 353 .open = salinfo_event_open, 354 .read = salinfo_event_read, 355 .llseek = noop_llseek, 356}; 357 358static int 359salinfo_log_open(struct inode *inode, struct file *file) 360{ |
363 struct proc_dir_entry *entry = PDE(inode); 364 struct salinfo_data *data = entry->data; | 361 struct salinfo_data *data = PDE_DATA(inode); |
365 366 if (!capable(CAP_SYS_ADMIN)) 367 return -EPERM; 368 369 spin_lock(&data_lock); 370 if (data->open) { 371 spin_unlock(&data_lock); 372 return -EBUSY; --- 8 unchanged lines hidden (view full) --- 381 } 382 383 return 0; 384} 385 386static int 387salinfo_log_release(struct inode *inode, struct file *file) 388{ | 362 363 if (!capable(CAP_SYS_ADMIN)) 364 return -EPERM; 365 366 spin_lock(&data_lock); 367 if (data->open) { 368 spin_unlock(&data_lock); 369 return -EBUSY; --- 8 unchanged lines hidden (view full) --- 378 } 379 380 return 0; 381} 382 383static int 384salinfo_log_release(struct inode *inode, struct file *file) 385{ |
389 struct proc_dir_entry *entry = PDE(inode); 390 struct salinfo_data *data = entry->data; | 386 struct salinfo_data *data = PDE_DATA(inode); |
391 392 if (data->state == STATE_NO_DATA) { 393 vfree(data->log_buffer); 394 vfree(data->oemdata); 395 data->log_buffer = NULL; 396 data->oemdata = NULL; 397 } 398 spin_lock(&data_lock); --- 59 unchanged lines hidden (view full) --- 458 } else { 459 data->state = STATE_LOG_RECORD; 460 } 461} 462 463static ssize_t 464salinfo_log_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos) 465{ | 387 388 if (data->state == STATE_NO_DATA) { 389 vfree(data->log_buffer); 390 vfree(data->oemdata); 391 data->log_buffer = NULL; 392 data->oemdata = NULL; 393 } 394 spin_lock(&data_lock); --- 59 unchanged lines hidden (view full) --- 454 } else { 455 data->state = STATE_LOG_RECORD; 456 } 457} 458 459static ssize_t 460salinfo_log_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos) 461{ |
466 struct inode *inode = file_inode(file); 467 struct proc_dir_entry *entry = PDE(inode); 468 struct salinfo_data *data = entry->data; | 462 struct salinfo_data *data = PDE_DATA(file_inode(file)); |
469 u8 *buf; 470 u64 bufsize; 471 472 if (data->state == STATE_LOG_RECORD) { 473 buf = data->log_buffer; 474 bufsize = data->log_size; 475 } else if (data->state == STATE_OEMDATA) { 476 buf = data->oemdata; --- 42 unchanged lines hidden (view full) --- 519 spin_unlock_irqrestore(&data_saved_lock, flags); 520 } 521 return 0; 522} 523 524static ssize_t 525salinfo_log_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos) 526{ | 463 u8 *buf; 464 u64 bufsize; 465 466 if (data->state == STATE_LOG_RECORD) { 467 buf = data->log_buffer; 468 bufsize = data->log_size; 469 } else if (data->state == STATE_OEMDATA) { 470 buf = data->oemdata; --- 42 unchanged lines hidden (view full) --- 513 spin_unlock_irqrestore(&data_saved_lock, flags); 514 } 515 return 0; 516} 517 518static ssize_t 519salinfo_log_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos) 520{ |
527 struct inode *inode = file_inode(file); 528 struct proc_dir_entry *entry = PDE(inode); 529 struct salinfo_data *data = entry->data; | 521 struct salinfo_data *data = PDE_DATA(file_inode(file)); |
530 char cmd[32]; 531 size_t size; 532 u32 offset; 533 int cpu; 534 535 size = sizeof(cmd); 536 if (count < size) 537 size = count; --- 168 unchanged lines hidden --- | 522 char cmd[32]; 523 size_t size; 524 u32 offset; 525 int cpu; 526 527 size = sizeof(cmd); 528 if (count < size) 529 size = count; --- 168 unchanged lines hidden --- |