Ejemplo n.º 1
0
void CMakeMountPointDlg::OnOK()
{
	UpdateData(TRUE);

	BOOL bRW = m_nType == 1;

	m_bMade = MakeMount(m_strDir, m_strVol, m_strCell, bRW);

	CDialog::OnOK();
}
Ejemplo n.º 2
0
int cd_opendevice (int unit, void *ioreq, uint32 flags)
{
	struct FSReq *fsreq = ioreq;
	struct CDSB *cdsb;
	struct MountEnviron *me;
	struct BlkReq blkreq;
	
	
	KPRINTF ("cd_opendevice ()");
	
	
	if ((cdsb = KMalloc (sizeof (struct CDSB))) != NULL)
	{
		me = fsreq->me;
		
		
		if (OpenDevice (me->device_name, me->device_unit, &blkreq, me->device_flags) == 0)
		{	
			/* FIXME:  Shouldn't need it (also in fat handler) */
			MemSet (cdsb, 0, sizeof (struct CDSB)); /* Need it as cdsb->validated isn't initialized */
			
			cdsb->device = blkreq.device;
			cdsb->unitp = blkreq.unitp;
			cdsb->me = fsreq->me;
			cdsb->reference_cnt = 0;
							
			LIST_INIT (&cdsb->node_list);
			LIST_INIT (&cdsb->active_filp_list);
			LIST_INIT (&cdsb->invalid_filp_list);
			
			cdsb->root_node.flags = ISO_DIRECTORY;
			cdsb->root_node.cdsb = cdsb;
			cdsb->root_node.reference_cnt = 0;
			
			if ((cdsb->buf = CreateBuf (cdsb->device, cdsb->unitp,
							me->buffer_cnt, me->block_size,
							me->partition_start, me->partition_end,
							me->writethru_critical, me->writeback_delay,
							me->max_transfer)) != NULL)
			{
				if (KSpawn (CDTask, cdsb, 10, "cd.handler") != -1)
				{		
					KWait (SIGF_INIT);
					
					RWWriteLock (&mountlist_rwlock);
					cd_device.reference_cnt ++;
					
					cdsb->device_mount = MakeMount (cdsb->me, &cd_device, cdsb);
					AddMount (cdsb->device_mount);
					
					RWUnlock (&mountlist_rwlock);

					fsreq->unitp = cdsb;
					fsreq->error = 0;
					fsreq->rc = 0;
					return 0;
				}
			}
		
			CloseDevice (&blkreq);
		}
		
		KFree (cdsb);
	}
	
	fsreq->error = IOERR_OPENFAIL;
	fsreq->rc = -1;
	
	KPANIC ("CD OpenDevice FAIL");
	return -1;
}