fifo_vnops.c (1541) | fifo_vnops.c (1549) |
---|---|
1/* 2 * Copyright (c) 1990, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 97 unchanged lines hidden (view full) --- 106}; 107struct vnodeopv_desc fifo_vnodeop_opv_desc = 108 { &fifo_vnodeop_p, fifo_vnodeop_entries }; 109 110/* 111 * Trivial lookup routine that always fails. 112 */ 113/* ARGSUSED */ | 1/* 2 * Copyright (c) 1990, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 97 unchanged lines hidden (view full) --- 106}; 107struct vnodeopv_desc fifo_vnodeop_opv_desc = 108 { &fifo_vnodeop_p, fifo_vnodeop_entries }; 109 110/* 111 * Trivial lookup routine that always fails. 112 */ 113/* ARGSUSED */ |
114int |
|
114fifo_lookup(ap) 115 struct vop_lookup_args /* { 116 struct vnode * a_dvp; 117 struct vnode ** a_vpp; 118 struct componentname * a_cnp; 119 } */ *ap; 120{ 121 122 *ap->a_vpp = NULL; 123 return (ENOTDIR); 124} 125 126/* 127 * Open called to set up a new instance of a fifo or 128 * to find an active instance of a fifo. 129 */ 130/* ARGSUSED */ | 115fifo_lookup(ap) 116 struct vop_lookup_args /* { 117 struct vnode * a_dvp; 118 struct vnode ** a_vpp; 119 struct componentname * a_cnp; 120 } */ *ap; 121{ 122 123 *ap->a_vpp = NULL; 124 return (ENOTDIR); 125} 126 127/* 128 * Open called to set up a new instance of a fifo or 129 * to find an active instance of a fifo. 130 */ 131/* ARGSUSED */ |
132int |
|
131fifo_open(ap) 132 struct vop_open_args /* { 133 struct vnode *a_vp; 134 int a_mode; 135 struct ucred *a_cred; 136 struct proc *a_p; 137 } */ *ap; 138{ --- 74 unchanged lines hidden (view full) --- 213 VOP_CLOSE(vp, ap->a_mode, ap->a_cred, ap->a_p); 214 return (error); 215} 216 217/* 218 * Vnode op for read 219 */ 220/* ARGSUSED */ | 133fifo_open(ap) 134 struct vop_open_args /* { 135 struct vnode *a_vp; 136 int a_mode; 137 struct ucred *a_cred; 138 struct proc *a_p; 139 } */ *ap; 140{ --- 74 unchanged lines hidden (view full) --- 215 VOP_CLOSE(vp, ap->a_mode, ap->a_cred, ap->a_p); 216 return (error); 217} 218 219/* 220 * Vnode op for read 221 */ 222/* ARGSUSED */ |
223int |
|
221fifo_read(ap) 222 struct vop_read_args /* { 223 struct vnode *a_vp; 224 struct uio *a_uio; 225 int a_ioflag; 226 struct ucred *a_cred; 227 } */ *ap; 228{ --- 23 unchanged lines hidden (view full) --- 252 rso->so_state &= ~SS_NBIO; 253 return (error); 254} 255 256/* 257 * Vnode op for write 258 */ 259/* ARGSUSED */ | 224fifo_read(ap) 225 struct vop_read_args /* { 226 struct vnode *a_vp; 227 struct uio *a_uio; 228 int a_ioflag; 229 struct ucred *a_cred; 230 } */ *ap; 231{ --- 23 unchanged lines hidden (view full) --- 255 rso->so_state &= ~SS_NBIO; 256 return (error); 257} 258 259/* 260 * Vnode op for write 261 */ 262/* ARGSUSED */ |
263int |
|
260fifo_write(ap) 261 struct vop_write_args /* { 262 struct vnode *a_vp; 263 struct uio *a_uio; 264 int a_ioflag; 265 struct ucred *a_cred; 266 } */ *ap; 267{ --- 13 unchanged lines hidden (view full) --- 281 wso->so_state &= ~SS_NBIO; 282 return (error); 283} 284 285/* 286 * Device ioctl operation. 287 */ 288/* ARGSUSED */ | 264fifo_write(ap) 265 struct vop_write_args /* { 266 struct vnode *a_vp; 267 struct uio *a_uio; 268 int a_ioflag; 269 struct ucred *a_cred; 270 } */ *ap; 271{ --- 13 unchanged lines hidden (view full) --- 285 wso->so_state &= ~SS_NBIO; 286 return (error); 287} 288 289/* 290 * Device ioctl operation. 291 */ 292/* ARGSUSED */ |
293int |
|
289fifo_ioctl(ap) 290 struct vop_ioctl_args /* { 291 struct vnode *a_vp; 292 int a_command; 293 caddr_t a_data; 294 int a_fflag; 295 struct ucred *a_cred; 296 struct proc *a_p; --- 6 unchanged lines hidden (view full) --- 303 if (ap->a_fflag & FREAD) 304 filetmp.f_data = (caddr_t)ap->a_vp->v_fifoinfo->fi_readsock; 305 else 306 filetmp.f_data = (caddr_t)ap->a_vp->v_fifoinfo->fi_writesock; 307 return (soo_ioctl(&filetmp, ap->a_command, ap->a_data, ap->a_p)); 308} 309 310/* ARGSUSED */ | 294fifo_ioctl(ap) 295 struct vop_ioctl_args /* { 296 struct vnode *a_vp; 297 int a_command; 298 caddr_t a_data; 299 int a_fflag; 300 struct ucred *a_cred; 301 struct proc *a_p; --- 6 unchanged lines hidden (view full) --- 308 if (ap->a_fflag & FREAD) 309 filetmp.f_data = (caddr_t)ap->a_vp->v_fifoinfo->fi_readsock; 310 else 311 filetmp.f_data = (caddr_t)ap->a_vp->v_fifoinfo->fi_writesock; 312 return (soo_ioctl(&filetmp, ap->a_command, ap->a_data, ap->a_p)); 313} 314 315/* ARGSUSED */ |
316int |
|
311fifo_select(ap) 312 struct vop_select_args /* { 313 struct vnode *a_vp; 314 int a_which; 315 int a_fflags; 316 struct ucred *a_cred; 317 struct proc *a_p; 318 } */ *ap; --- 5 unchanged lines hidden (view full) --- 324 else 325 filetmp.f_data = (caddr_t)ap->a_vp->v_fifoinfo->fi_writesock; 326 return (soo_select(&filetmp, ap->a_which, ap->a_p)); 327} 328 329/* 330 * This is a noop, simply returning what one has been given. 331 */ | 317fifo_select(ap) 318 struct vop_select_args /* { 319 struct vnode *a_vp; 320 int a_which; 321 int a_fflags; 322 struct ucred *a_cred; 323 struct proc *a_p; 324 } */ *ap; --- 5 unchanged lines hidden (view full) --- 330 else 331 filetmp.f_data = (caddr_t)ap->a_vp->v_fifoinfo->fi_writesock; 332 return (soo_select(&filetmp, ap->a_which, ap->a_p)); 333} 334 335/* 336 * This is a noop, simply returning what one has been given. 337 */ |
338int |
|
332fifo_bmap(ap) 333 struct vop_bmap_args /* { 334 struct vnode *a_vp; 335 daddr_t a_bn; 336 struct vnode **a_vpp; 337 daddr_t *a_bnp; 338 } */ *ap; 339{ --- 4 unchanged lines hidden (view full) --- 344 *ap->a_bnp = ap->a_bn; 345 return (0); 346} 347 348/* 349 * At the moment we do not do any locking. 350 */ 351/* ARGSUSED */ | 339fifo_bmap(ap) 340 struct vop_bmap_args /* { 341 struct vnode *a_vp; 342 daddr_t a_bn; 343 struct vnode **a_vpp; 344 daddr_t *a_bnp; 345 } */ *ap; 346{ --- 4 unchanged lines hidden (view full) --- 351 *ap->a_bnp = ap->a_bn; 352 return (0); 353} 354 355/* 356 * At the moment we do not do any locking. 357 */ 358/* ARGSUSED */ |
359int |
|
352fifo_lock(ap) 353 struct vop_lock_args /* { 354 struct vnode *a_vp; 355 } */ *ap; 356{ 357 358 return (0); 359} 360 361/* ARGSUSED */ | 360fifo_lock(ap) 361 struct vop_lock_args /* { 362 struct vnode *a_vp; 363 } */ *ap; 364{ 365 366 return (0); 367} 368 369/* ARGSUSED */ |
370int |
|
362fifo_unlock(ap) 363 struct vop_unlock_args /* { 364 struct vnode *a_vp; 365 } */ *ap; 366{ 367 368 return (0); 369} 370 371/* 372 * Device close routine 373 */ 374/* ARGSUSED */ | 371fifo_unlock(ap) 372 struct vop_unlock_args /* { 373 struct vnode *a_vp; 374 } */ *ap; 375{ 376 377 return (0); 378} 379 380/* 381 * Device close routine 382 */ 383/* ARGSUSED */ |
384int |
|
375fifo_close(ap) 376 struct vop_close_args /* { 377 struct vnode *a_vp; 378 int a_fflag; 379 struct ucred *a_cred; 380 struct proc *a_p; 381 } */ *ap; 382{ --- 19 unchanged lines hidden (view full) --- 402 if (error1) 403 return (error1); 404 return (error2); 405} 406 407/* 408 * Print out the contents of a fifo vnode. 409 */ | 385fifo_close(ap) 386 struct vop_close_args /* { 387 struct vnode *a_vp; 388 int a_fflag; 389 struct ucred *a_cred; 390 struct proc *a_p; 391 } */ *ap; 392{ --- 19 unchanged lines hidden (view full) --- 412 if (error1) 413 return (error1); 414 return (error2); 415} 416 417/* 418 * Print out the contents of a fifo vnode. 419 */ |
420int |
|
410fifo_print(ap) 411 struct vop_print_args /* { 412 struct vnode *a_vp; 413 } */ *ap; 414{ 415 416 printf("tag VT_NON"); 417 fifo_printinfo(ap->a_vp); 418 printf("\n"); | 421fifo_print(ap) 422 struct vop_print_args /* { 423 struct vnode *a_vp; 424 } */ *ap; 425{ 426 427 printf("tag VT_NON"); 428 fifo_printinfo(ap->a_vp); 429 printf("\n"); |
430 return (0); |
|
419} 420 421/* 422 * Print out internal contents of a fifo vnode. 423 */ | 431} 432 433/* 434 * Print out internal contents of a fifo vnode. 435 */ |
436int |
|
424fifo_printinfo(vp) 425 struct vnode *vp; 426{ 427 register struct fifoinfo *fip = vp->v_fifoinfo; 428 429 printf(", fifo with %d readers and %d writers", 430 fip->fi_readers, fip->fi_writers); | 437fifo_printinfo(vp) 438 struct vnode *vp; 439{ 440 register struct fifoinfo *fip = vp->v_fifoinfo; 441 442 printf(", fifo with %d readers and %d writers", 443 fip->fi_readers, fip->fi_writers); |
444 return (0); |
|
431} 432 433/* 434 * Return POSIX pathconf information applicable to fifo's. 435 */ | 445} 446 447/* 448 * Return POSIX pathconf information applicable to fifo's. 449 */ |
450int |
|
436fifo_pathconf(ap) 437 struct vop_pathconf_args /* { 438 struct vnode *a_vp; 439 int a_name; 440 int *a_retval; 441 } */ *ap; 442{ 443 --- 11 unchanged lines hidden (view full) --- 455 return (EINVAL); 456 } 457 /* NOTREACHED */ 458} 459 460/* 461 * Fifo failed operation 462 */ | 451fifo_pathconf(ap) 452 struct vop_pathconf_args /* { 453 struct vnode *a_vp; 454 int a_name; 455 int *a_retval; 456 } */ *ap; 457{ 458 --- 11 unchanged lines hidden (view full) --- 470 return (EINVAL); 471 } 472 /* NOTREACHED */ 473} 474 475/* 476 * Fifo failed operation 477 */ |
478int |
|
463fifo_ebadf() 464{ 465 466 return (EBADF); 467} 468 469/* 470 * Fifo advisory byte-level locks. 471 */ 472/* ARGSUSED */ | 479fifo_ebadf() 480{ 481 482 return (EBADF); 483} 484 485/* 486 * Fifo advisory byte-level locks. 487 */ 488/* ARGSUSED */ |
489int |
|
473fifo_advlock(ap) 474 struct vop_advlock_args /* { 475 struct vnode *a_vp; 476 caddr_t a_id; 477 int a_op; 478 struct flock *a_fl; 479 int a_flags; 480 } */ *ap; 481{ 482 483 return (EOPNOTSUPP); 484} 485 486/* 487 * Fifo bad operation 488 */ | 490fifo_advlock(ap) 491 struct vop_advlock_args /* { 492 struct vnode *a_vp; 493 caddr_t a_id; 494 int a_op; 495 struct flock *a_fl; 496 int a_flags; 497 } */ *ap; 498{ 499 500 return (EOPNOTSUPP); 501} 502 503/* 504 * Fifo bad operation 505 */ |
506int |
|
489fifo_badop() 490{ 491 492 panic("fifo_badop called"); 493 /* NOTREACHED */ 494} | 507fifo_badop() 508{ 509 510 panic("fifo_badop called"); 511 /* NOTREACHED */ 512} |