Esempio n. 1
0
int AsnTypeDesc::TclGetDesc (Tcl_DString *desc) const
{
  Tcl_DStringStartSublist (desc);
  Tcl_DStringAppendElement (desc, getmodule() ? (char*) getmodule()->name : "");
  Tcl_DStringAppendElement (desc, getname() ? (char*) getname() : "");
  Tcl_DStringEndSublist (desc);
  Tcl_DStringAppendElement (desc, ispdu() ? "pdu" : "sub");
  Tcl_DStringAppendElement (desc, (char*) typenames[gettype()]);

  return TCL_OK;
}
Esempio n. 2
0
File: ndis.c Progetto: HarryR/sanos
int __declspec(dllexport) install(struct unit *unit, char *opts) {
  char *modfn = opts;
  struct ndis_driver *driver;
  struct ndis_adapter *adapter;
  hmodule_t hmod;
  int rc;
  ndis_status open_status;
  ndis_status status;
  enum ndis_medium media;
  unsigned int selected_index;

  kprintf("ndis: loading driver %s for unit %08X\n", opts, unit->unitcode);

  // Try to find existing driver
  driver = NULL;
  hmod = getmodule(modfn);
  if (hmod) {
    driver = drivers;
    while (driver) {
      if (driver->hmod == hmod) break;
      driver = driver->next;
    }
  }

  // If driver not loaded, load it now and initialize
  if (!driver) {
    int (__stdcall *entry)(struct ndis_driver *driver, void *reserved);

    hmod = load(modfn, MODLOAD_NOINIT);
    if (!hmod) return -ENOEXEC;

    entry = getentrypoint(hmod);
    if (!entry) return -ENOEXEC;

    driver = kmalloc(sizeof(struct ndis_driver));
    if (!driver) return -ENOMEM;
    memset(driver, 0, sizeof(struct ndis_driver));

    rc = entry(driver, NULL);
    if (rc < 0) {
      kprintf("ndis: driver initialization failed with error code %08X\n", rc);
      kfree(driver);
      unload(hmod);
      return -ENXIO;
    }

    driver->hmod = hmod;
    driver->next = drivers;
    drivers = driver;
  }
Esempio n. 3
0
int AsnSe_TypeDesc::mandatmemberr (Tcl_Interp *interp, const char *membername) const
{
  sprintf (interp->result, "(in type %s.%s:) member %s is mandatory and can't be deleted", getmodule()->name, getname(), membername);
  Tcl_SetErrorCode (interp, "SNACC", "MANDMEMB", NULL);
  return TCL_ERROR;
}